Polinom Regresyon: Python ile Uygulama-1

Basit ve çoklu lineer regresyonda bağımlı değişken ile bağımsız değişkenler arasındaki ilişki doğrusaldı. Ancak gerçek hayatta bazı durumlarda değişkenler arası ilişki doğrusal olmayabilir. Böyle durumlarda ilişkiyi modellemek için Polinom Regresyon kullanılabilir.

Basit lineer regresyon eşitliği: y = c + bX
Çoklu lineer regresyon eşitliği: y = c + b1X1 + b2X2 …… + biXi
Polinom regresyon: c + b1X1 + b2X22 …… biXii

Yukarıdaki basit örnekte verilerin en iyi temsil edecek şekilde geçen doğrunun polinom regresyon doğrusuna ait olduğunu görebiliyoruz. Dolayısıyla her problemi lineer regresyon ile çözemeyiz.

Kütüphaneleri İndirme, Çalışma Diznini Ayarlama ve Veri Setini İndirme

Veriyi buradan indirebilirsiniz.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
os.chdir('Sizin_Calisma_Dizniniz')
dataset = pd.read_csv('PozisyonSeviyeMaas.csv')

 

Veriyi Anlamak

Yukarıdaki tabloda niteliklerimizi görüyoruz:

Pozisyon: İş Ünvanı. Nitelik türü kategorik.

Seviye:  İş ünvanlarını birbiri arasında maaş, astlık-üstlük vb. sıralayan  nitelik. Nitelik türü nümerik.

Maas: Her bir pozisyondaki personelin yıllık maaşı. Nitelik türü nümerik.

Bu veri seti ve kuracağımız polinom model ile çözmeye çalışacağımız problem seviyesine göre bir personelin maaşını tahmin etmek olacak. Böylelikle y hedef değişkenimizin Maas, bağımsız değişken Seviye olduğunu çıkarabiliyoruz. Pozisyon seviye ile yakından ilgili bir nitelik ve seviyenin adlandırması gibi bir fonksiyonu olduğu için bu niteliği veri setinden çıkarıyoruz.

Veri seti çok az bir kayıttan (10 adet) oluştuğu için eğitim ve test olarak ayırmıyoruz.

Bağımlı ve Bağımsız Değişkenleri Oluşturmak

X = dataset.iloc[:, 1:2].values
y = dataset.iloc[:, 2].values

 

Değişkenlerin ayrılmış halini yukarıdaki resimde görüyoruz.

Basit Lineer Regresyon ile Modeli Eğitmek

Modelimizi eğitmek için basit ve çoklu doğrusal regresyonda olduğu gibi scikit-learn kütüphanesinden LinearRegression sınıfını kullanacağız. Öncelikle bu sınıftan lin_reg adında bir nesne yaratıyoruz. Daha sonra bu nesnenin fit() metoduna X, y değişkenlerimizi parametre olarak veriyoruz. Böylelikle makinemizi kurmuş oluyoruz (aklıma birden kurmalı saat ve oyuncaklar geldi:) ) Diyeceksiniz ki konumuz polinom regresyon niye basit regresyon yapıyoruz? Karşılaştırabilmek için. Birazdan polinom regresyon da yapacağız.

from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X, y)

Polinom Regresyon için Ön Hazırlık

Polinom regresyon modeli kurmak için öncelikle veri ön işleme yapmamız gerekiyor.

from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree = 2)
X_poly = poly_reg.fit_transform(X)

Şimdi yukarıdaki kodlar ile neler yaptık? İlk satırda scikit-learn preprocessing modülünden PolynomialFeatures sınıfını indirdik. İkinci satırda bu sınıftan poly_reg adında bir nesne oluşturduk. Nesne oluşurken sınıf ana yapıcısına degree parametresini 2 olarak gönderdik. Bu değer polinomun derecesini belirliyor. Bu nesnenin işi orijinal tek sütunlu X nitelikler matrisini alıp nesnenin fit_transform() metoduyla yeniden biçimlendirmek. Biçimlendirilmiş yeni nitelikler matrisini X_poly adlı değişkene atıyoruz. Yeni nitelikler matrisine göz atalım:

Solda orijinal X nitelikler matrisini, sağda ise X matrisinden türetilmiş yeni polinom nitelikler matrisini görüyoruz. Sağ tarafta X_poly diye adlandırdığımız yeni matrisin 1’inci indeksi orijinal X matrsine karşılık geliyor. İndeks 2 2’nci derece, 3 3’üncü derece, 4 ise 4’üncü derece bağımsız değişkene işaret ediyor. İndeks 0’a dikkat ettiyseniz hepsi 1’lerden oluşmuş. Bu birlerin olduğu nitelik regresyon eşitliğimizdeki sabit katsayının değeri 1’e eşit olan gizli X0‘a işaret ediyor. Biz başka bir yazımızda bunu elle yapmıştık ancak burada poly_reg nesnesi oluşurken X0 ile ilgili sütun otomatik olarak yeni matrise eklendi.

Polinom Lineer Regresyon ile Modeli Eğitmek

 Veri ön hazırlığı kapsamında yeni (X_poly) nitelikler matrisini oluşturduk. Şimdi modeli eğitme zamanı:

poly_reg.fit(X_poly, y)
lin_reg_2 = LinearRegression()
lin_reg_2.fit(X_poly, y)

Basit lineer modeldeki LinearRegression sınıfını kullandığımız için nesneler karışmasın diye ikinci lineer model nesnesi için lin_reg_2 nesnesini kullandık. Bu yazıyı burada kesiyorum devamı ikinci yazıda. Veriyle kalın…

Yazar Hakkında
Toplam 147 yazı
Erkan ŞİRİN
Erkan ŞİRİN
2014'ten beri hem akademik alanda hem de sektörde pratik anlamda büyük veri ve veri bilimi ile ilgili çalışmalar yürütmektedir. Büyük veri ve veri bilimi ile ilgili birçok kurum ve şirkete danışmanlık ve eğitimler vermekte, projeler icra etmektedir. Çalışma alanları: büyük veri platformlarının kurulum ve yönetimi, büyük veri üzerinde makine öğrenmesi, olağan dışılık ve sahtecilik tespiti, akan veri işleme ve veri hazırlama sürecidir.
Yorumlar (5 yorum)
Ahmet Öz
Ahmet Öz Cevapla
- 11:55

PozisyonSeviyeMaas.csv dosyasını siteye yollayabilir misiniz?

cetin
cetin Cevapla
- 17:57

merhaba,

data setine bakarak polinom regresyon uygulamaya nasıl karar veriyoruz. örneğin tek tek tüm bağımsız değişkenlerle bağımlı değişken arasında korelasyona mı bakıyoruz.

    Erkan ŞİRİN
    Erkan ŞİRİN Cevapla
    - 06:10

    Selam. Bağımsız değişkenlerle bağımlı değişken arasında lineer olmayan bir ilişki varsa polinom regresyon iyi bir seçim olabilir. Korelasyon doğrusal ilişkiyi söylediği için oradan anlamak kolay olmaz. Ancak saçılma diyagramlarını veri keşfi esnasında incelerseniz oradan doğrusal olmayan ilişkiyi yakalayabilirsiniz.

çetin
çetin Cevapla
- 10:41

merhaba,

aslında tek tek tüm bağımsız değişkenlerle bağımlı değişken arasındaki saçılım grafiğine mi bakmak gerekir.

örneğin 5 değişkenin 3 ü doğrusallık ilişkisi sağlıyorken 2 si sağlamıyorsa. değişkenlere bir dönüşüm mü yapmak gerekir. daha net olması açısından hatalar ile bağımlı değişken arasındaki saçılım grafiğini mi yorumlamak daha doğru eğer burda bir lineer ilişki yok ise polinom regresyonlar mı düşünülmeli.

teşekkürler…

    Erkan ŞİRİN
    Erkan ŞİRİN Cevapla
    - 10:45

    Merhaba. Bu durumda biraz sonuç odaklı gidebilirsiniz. Performans kriteri belirlersiniz. Bu kritere göre doğrusal doğrusal olmayan modelden hangisi daha başarılıysa onu kullanırsınız. Ancak bağımlı değişkene etkisi yüksek değişkenler doğrusal olmayan bir ilişki içindeyse doğrusal olmayan modelin daha başarılı olması beklenir.

Bir cevap yazın

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

×

Bir Şeyler Ara