Python ile Polinomial Regresyon

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()
This image has an empty alt attribute; its file name is image-3.png

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:
This image has an empty alt attribute; its file name is image-4.png

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.

Birisi “Python ile Polinomial Regresyon” üzerinde düşündü

Yorum bırakın