Python ile AI - Denetimli Öğrenme: Regresyon

Regresyon, en önemli istatistiksel ve makine öğrenimi araçlarından biridir. Makine öğrenimi yolculuğunun gerilemeden başladığını söylemek yanlış olmaz. Veriye dayalı kararlar almamızı sağlayan veya başka bir deyişle girdi ve çıktı değişkenleri arasındaki ilişkiyi öğrenerek verilere dayalı tahminler yapmamızı sağlayan parametrik teknik olarak tanımlanabilir. Burada, girdi değişkenlerine bağlı çıktı değişkenleri, sürekli değerli gerçek sayılardır. Regresyonda, girdi ve çıktı değişkenleri arasındaki ilişki önemlidir ve girdi değişkeninin değişmesiyle çıktı değişkeninin değerinin nasıl değiştiğini anlamamıza yardımcı olur. Regresyon, fiyatların, ekonominin, varyasyonların vb. Tahminlerinde sıklıkla kullanılır.

Python'da Regresör Oluşturma

Bu bölümde, tek ve çok değişkenli regresörün nasıl oluşturulacağını öğreneceğiz.

Doğrusal Regresör / Tek Değişkenli Regresör

Birkaç gerekli paketi önemli hale getirelim -

import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt

Şimdi giriş verilerini sağlamamız gerekiyor ve verilerimizi linear.txt adlı dosyaya kaydettik.

input = 'D:/ProgramData/linear.txt'

Bu verileri kullanarak yüklememiz gerekir. np.loadtxt işlevi.

input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]

Bir sonraki adım modeli eğitmek olacaktır. Eğitim ve test örnekleri verelim.

training_samples = int(0.6 * len(X))
testing_samples = len(X) - num_training

X_train, y_train = X[:training_samples], y[:training_samples]

X_test, y_test = X[training_samples:], y[training_samples:]

Şimdi, doğrusal bir regresör nesnesi oluşturmamız gerekiyor.

reg_linear = linear_model.LinearRegression()

Nesneyi eğitim örnekleri ile eğitin.

reg_linear.fit(X_train, y_train)

Tahminleri test verileriyle yapmamız gerekiyor.

y_test_pred = reg_linear.predict(X_test)

Şimdi verileri çizin ve görselleştirin.

plt.scatter(X_test, y_test, color = 'red')
plt.plot(X_test, y_test_pred, color = 'black', linewidth = 2)
plt.xticks(())
plt.yticks(())
plt.show()

Çıktı

Şimdi, doğrusal regresyonumuzun performansını şu şekilde hesaplayabiliriz -

print("Performance of Linear regressor:")
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred),
2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

Çıktı

Doğrusal Regresörün Performansı -

Mean absolute error = 1.78
Mean squared error = 3.89
Median absolute error = 2.01
Explain variance score = -0.09
R2 score = -0.09

Yukarıdaki kodda bu küçük veriyi kullandık. Büyük bir veri kümesi istiyorsanız, daha büyük veri kümesini içe aktarmak için sklearn.dataset'i kullanabilirsiniz.

2,4.82.9,4.72.5,53.2,5.56,57.6,43.2,0.92.9,1.92.4,
3.50.5,3.41,40.9,5.91.2,2.583.2,5.65.1,1.54.5,
1.22.3,6.32.1,2.8

Çok Değişkenli Regresör

Öncelikle, birkaç gerekli paketi içeri aktaralım -

import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures

Şimdi giriş verilerini sağlamamız gerekiyor ve verilerimizi linear.txt adlı dosyaya kaydettik.

input = 'D:/ProgramData/Mul_linear.txt'

Bu verileri kullanarak yükleyeceğiz np.loadtxt işlevi.

input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]

Sonraki adım, modeli eğitmek olacaktır; eğitim ve test örnekleri vereceğiz.

training_samples = int(0.6 * len(X))
testing_samples = len(X) - num_training

X_train, y_train = X[:training_samples], y[:training_samples]

X_test, y_test = X[training_samples:], y[training_samples:]

Şimdi, doğrusal bir regresör nesnesi oluşturmamız gerekiyor.

reg_linear_mul = linear_model.LinearRegression()

Nesneyi eğitim örnekleri ile eğitin.

reg_linear_mul.fit(X_train, y_train)

Şimdi, sonunda test verileriyle tahmin yapmamız gerekiyor.

y_test_pred = reg_linear_mul.predict(X_test)

print("Performance of Linear regressor:")
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred), 2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

Çıktı

Doğrusal Regresörün Performansı -

Mean absolute error = 0.6
Mean squared error = 0.65
Median absolute error = 0.41
Explain variance score = 0.34
R2 score = 0.33

Şimdi, 10 derecelik bir polinom oluşturup regresörü eğiteceğiz. Örnek veri noktasını sağlayacağız.

polynomial = PolynomialFeatures(degree = 10)
X_train_transformed = polynomial.fit_transform(X_train)
datapoint = [[2.23, 1.35, 1.12]]
poly_datapoint = polynomial.fit_transform(datapoint)

poly_linear_model = linear_model.LinearRegression()
poly_linear_model.fit(X_train_transformed, y_train)
print("\nLinear regression:\n", reg_linear_mul.predict(datapoint))
print("\nPolynomial regression:\n", poly_linear_model.predict(poly_datapoint))

Çıktı

Doğrusal regresyon -

[2.40170462]

Polinom regresyon -

[1.8697225]

Yukarıdaki kodda bu küçük veriyi kullandık. Büyük bir veri kümesi istiyorsanız, daha büyük bir veri kümesini içe aktarmak için sklearn.dataset'i kullanabilirsiniz.

2,4.8,1.2,3.22.9,4.7,1.5,3.62.5,5,2.8,23.2,5.5,3.5,2.16,5,
2,3.27.6,4,1.2,3.23.2,0.9,2.3,1.42.9,1.9,2.3,1.22.4,3.5,
2.8,3.60.5,3.4,1.8,2.91,4,3,2.50.9,5.9,5.6,0.81.2,2.58,
3.45,1.233.2,5.6,2,3.25.1,1.5,1.2,1.34.5,1.2,4.1,2.32.3,
6.3,2.5,3.22.1,2.8,1.2,3.6