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