Polinom Regresyon: Python ile Uygulama-2

Python ile polinom lineer regresyon yazımıza kaldığımız yerden devam ediyoruz. Son olarak yeni X_poly nitelikler matrisini oluşturmuş, poly_reg nesnesine bu matrisi parametre vererek modelimizi oluşturmuştuk.

Lineer Regresyon Modelin Grafiğini Çizmek

Bir önceki yazımızda da söylediğimiz gibi burada lineer model oluşturup grafik ile göstermek istememizin sebebi polinom regresyonu daha iyi anlayabilmekti. Bu sebeple önce lineer modelimizin grafiğini çizelim. Saçılma diyagramı ve lineer regresyon doğrusunu gösterecek kodlar aşağıdadır:

plt.scatter(X, y, color = 'red')
plt.plot(X, lin_reg.predict(X), color = 'blue')
plt.title('Pozisyon&Maas Lineer Regresyon')
plt.xlabel('Pozisyon')
plt.ylabel('Maas')
plt.show()

 

İlk satır plt.scatter() fonksiyonu bizim orijinal X ve y değişkenlerimizin saçılma (serpilme) diyagramını çizdi. İkinci satır X’in tamamen kendisiyle eğiterek oluşturulan lineer regresyon doğrusunu mavi renkte çizdi. Diğer satırlar etiket ve isimlendirmeleri gerçekleştirdi. Şimdi yukarıdaki grafiği inceleyelim ve bir örnek ile sıkıntıyı anlayalım. Bu modeli kullanarak 6-7 arasında bir pozisyonda bulunan çalışana maaş hesaplamaya kalktığımızda çalışan sevincinden havalara uçacaktır. Gerçekte o pozisyonlar yıllık 200 bin altında  kazanırken bu çalışan 200 bin üzeri alacaktır. İşte her çekiç ile her çivi çakılmaz prensibiyle elimizdeki mevcut veriyi analiz etmek için lineer regresyon yetersiz kalıyor. Çünkü burada kullanılan veride bağımlı ve bağımsız değişkenler arasındaki ilişki doğrusal değil.

Polinom Regresyon Modelin Grafiğini Çizmek

plt.scatter(X, y, color = 'red')
plt.plot(X, lin_reg_2.predict(poly_reg.fit_transform(X)), color = 'blue')
plt.title('Pozisyon&Maas Polinom Regresyon')
plt.xlabel('Pozisyon')
plt.ylabel('Maas')
plt.show()

 


Gördüğümüz gibi polinom model verimizi daha iyi modelliyor. Şimdi 6-7 arasında bulunan bir çalışana daha isabetli bir maas belirlenebilecek. Bu modelde polinomun derecesini 2 olarak belirlemiştik. Şimdi bu dereceyi 3 yapalım ve bakalım nasıl bir model ortaya çıkacak?

from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree = 3)
X_poly = poly_reg.fit_transform(X)
poly_reg.fit(X_poly, y)
lin_reg_2 = LinearRegression()
lin_reg_2.fit(X_poly, y)
plt.scatter(X, y, color = 'red')
plt.plot(X, lin_reg_2.predict(poly_reg.fit_transform(X)), color = 'blue')
plt.title('Pozisyon&Maas Polinom Regresyon')
plt.xlabel('Pozisyon')
plt.ylabel('Maas')
plt.show()

 


Gördüğümüz gibi 3’üncü derece daha iyi uyum sağlamış görünüyor. Şimdi farkı daha iyi görebilmek için modelleri tahmin yarışına sokalım. Diyelim ki 6.7’inci seviyede birine maaş hesaplaması yapılacak. Bakalım lineer model ve polinom model neler öngörüyor.

Lineer model:

lin_reg.predict(6.7)
array([ 346554.54545455])

Lineer model 346.554 TL tahmin etti.

Polinom model:

lin_reg_2.predict(poly_reg.fit_transform(6.7))
array([ 148912.88461539])

Polinom model ise 148.912 TL tahmin etti. Arada uçurum var. Acaba hangisi daha doğru?

Şimdi orijinal veri setimizi tekrar buraya koyalım ve sonuçların başarısını karşılaştıralım.

Aradaki farkı gördüğümüz gibi lineer model yaklaşık 346 bin tahmin ederken, polinom model 148 bin tahmin etti. Gerçek veriyle de karşılaştırdığımızda polinom modelin gerçeğe daha yakın bir tahminde bulunduğunu görebiliyoruz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir