Salı Nisan 30th, 2019

Polynomial Regression

ile Ebubekir Sezer

Polynomial regresyon, bizim elimizde bulunan data(veri)’ da bağımlı(dependent) ile bağımsız(independet) veri arasındaki ilişkide bağımsız verinin gücü 1’den fazla olduğu zaman kullandığımız regresyon modelidir. Polynomial regression modelinde çizilen line(çizgi) eğimli bir şekildedir oysa linear regression modelindeki line(çizgi) düz, doğrusal bir şekilde artmaktaydı. Polynomial regression formül halinde göstermek gerekirse;

y=y_0+y_1∗x+y_2∗x^2+…+y_n∗x^n

bu şekilde gösterebiliriz. Burada y tahmin edilmeye çalışılan değer y_0 değeri çizilen line’ın y ekseninde kestiği noktayı gösterir ve y_1 değeri çizilen line’ımızın o noktadaki eğimidir, x ise bağımsız olan sabit degişkenimiz.

Şimdi polynomial regression kullanarak bir problem hakkında tahminleme yapmak istiyorum. İlk önce bir data(verimiz) olması gerekmekte bunun için çok basit bir veri olan bir insanın yaşına göre boyundaki değişimi gösteren bir verim var. Bu veriyi hem linear regression hemde polynomial regression ile yapacağım tahminleme’den daha iyi anlayacaksınızdır hangi regression modelinin hangi zamanlarda kullanılması gerektiğini. Bu veriyi ben hazırladığım için veriler çok doğru olmayabilir.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data=pd.read_csv("age_height.csv",sep=";")
 
print(data.head())
y=data.Boy.values.reshape(-1,1)
x=data.Yas.values.reshape(-1,1)
plt.scatter(x,y)
plt.title("Age vs Height")
plt.xlabel("Age")
plt.ylabel("Height")

İlk önce kütüphaneleri ekliyorum ve daha sonra pandas’ı kullanarak verimi okuyorum ve ilk beş değeri ekrana yazdırıyorum daha sonra bu verinin grafiğini çizdirip veri’nin grafiği hakkında bilgi sahibi oluyoruz.

Buradan sonra linear regression kullanarak verim’de çizilen line’ın ne kadar doğru tahminleme yaparak çizildiğini görmek istiyorum sklearn kütüphanesini kullanarak Linear Regression’ı projeme ekliyorum. Daha sonra değerlerimi fit ederek linear regression’ı kullanarak bağımsız değişkeni kullanarak değer tahminle’meye çalışıyorum ve daha sonra bunun grafiğini elde ediyorum.

from sklearn.linear_model import LinearRegression
linear= LinearRegression()
linear.fit(x,y)

y_head=linear.predict(x)
plt.plot(x,y_head,color="red",label="LinearRegression")
plt.show()

 

 

Şimdi ise Polynomial Regression’ı sklearn kütüphanesini kullanarak projeme ekliyorum. Bağımsız değişkeni polynomial regression kullanarak fit ediyorum.  Daha sonra ise linear regression kullanarak bu fit ettiğim polynomial regression değerini linear regression ile tekrar fit edip, değer tahmin edebilmesi için predict kullanarak başka bir değişken’e atıyorum. Daha sonra ise bunun grafiğini çizdiriyor’um.

from sklearn.preprocessing import PolynomialFeatures
polynomial_regression=PolynomialFeatures(degree=2)

x_polynomial=polynomial_regression.fit_transform(x)

linear_regression=LinearRegression()
linear_regression.fit(x_polynomial,y)   

y_head2=linear_regression.predict(x_polynomial)
plt.plot(x,y_head2,color="blue",label="PolynomialRegression")
plt.legend()
plt.show()

Grafikten’de anlayacağımız gibi bu veri için polynomial regression kullanmamız daha sağlıklı veriler elde etmemizi sağlar.

Soru ve görüşlerinizi yorum veya e-mail olarak sorabilirsiniz.