Elimizdeki veri setinde x ve y değerleri bazen doğrusal olmayabilir.Yani biri artınca diğerinde artan veya azalan bir süreklilik yoktur. Bu durumda Polynomial Regression ( Polinomsal Regresyon ) kullanılır. Lineer regresyon, multiple regresyon ve polinomial regresyon arasında kıyaslama yaparsak :
Lineer regresyon : y = b0 + b1*x
Multiple lineer regresyon : y = b0 + b1*x1 +b2*x2+…+bn*xn
Polinomial lineer regresyon : y = b0 + b1*x +b2*x^2 +b3*x^3+…+bn*x^n
Diyelim ki eliminde araba hızı ve araba fiyatı arasındaki ilişkiyi gösteren bir veri seti olsun.

Pythonda lineer regresyonu kullanarak modelimizi fit edersek :
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("/MACHINE_LEARNING/PolinomialRegressionDataset.csv",sep = ";")
#araba max hiz adında bir array yapmak için, reshape (15,boşluk) değerini (15,1) değerine çevirir.
#makine öğrenmesi için boşluk formatı olmamalı !
y = df.araba_max_hiz.values.reshape(-1,1)
#araba fiyat adında bir array yapmak için
x = df.araba_fiyat.values.reshape(-1,1)
plt.scatter(x,y)
plt.ylabel("araba_max_hiz")
plt.xlabel("araba_fiyat")
plt.show()

from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(x,y)
#fit ettiğimiz eğriye göre x array'içindeki değerleri kullanarak y değeri için tahmin yapıcaz.
#y_head değerlerini buluyoruz.
y_head = lr.predict(x)
#En küçük MSE değerine göre uydurulan eğriyi görelim :
plt.scatter(x,y)
plt.ylabel("araba_max_hiz")
plt.xlabel("araba_fiyat")
plt.plot(x,y_head,color="red",label ="linear")
plt.show()
output:

Elimizdeki bu fit edilen line ile tahmin yapalım :
#fiyatı 10 milyon tl'lik arabanın hızını tahmin edelim
print("10 milyon tl lik araba hizi tahmini: ",lr.predict(10000000))
output:
[[871.6640]]
Bu hıza bir arabanın ulaşabilmesi mümkün değildir dolayısıyla bu veri seti için lineer regresyon kesinlikle uygun değil.Şimdi polinomial regresyon yapalım.
Y ekseni : araba max hız
X ekseni : araba fiyatı
X^2 : Araba fiyatının karesi
[0] = x^0 = 1
[1] = x^1 değerleri
[2] = x^2 değerleri

Python ile polinomial regresyon nasıl yapılır?
# polynomial regression = y = b0 + b1*x +b2*x^2 + b3*x^3 + ... + bn*x^n
from sklearn.preprocessing import PolynomialFeatures
polynomial_regression = PolynomialFeatures(degree = 2)
#x değerini yani araba fiyatını2.dereceye x^2'ye çevirir.
x_polynomial = polynomial_regression.fit_transform(x)
# %% fit
linear_regression2 = LinearRegression()
linear_regression2.fit(x_polynomial,y)
y_head2 = linear_regression2.predict(x_polynomial)
plt.plot(x,y_head2,color= "green",label = "poly")
plt.legend()
plt.show()
output:

Polinom dercesini 3 ‘e çıkartırsak :

polinom dercesini 4’e çıkartırsak :

Modelimize en uygun şeklin 4.derecede olduğunu gördük.
https://educater960692302.wordpress.com/2020/05/26/learning-english-fast-english-practical-english/
BeğenBeğen