Makine Öğrenmesi - I-Doğrusal İlişkiler (Linear Relationships)

Doğrusal Regresyonları Birlikte Kullanma

Yayın tarihi :27-Ara-21
Bölüm kodlarını ve/veya veri setlerini indir.

Doğrusal Regrasyon modelleri olarak;

  • LinearRegrassion
  • Ridge
  • Lasso
  • Elastic-Net
  • PLSRegression

olmak üzere 5 farklı lineer regresyon modeli incelenmiş oldu.

Yukarda sayılan regresyon modellerinde aynı veri seti üzerinde tahmin işlemi yapıldığında MSERMSEMAER2_Score değerlerinde farklılıklar olacaktır. İlgili değerlerinin hangi regresyon modelinde daha iyi sonuç verdiğini tek bir tabloda görebilmek için aşağıdaki fonksiyonu kullanabiliriz

def linearRegressionFunc(dataset,columnName):
    
    #Gerekli kütüphaneleri eklendi
    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import mean_squared_error,r2_score, mean_absolute_error
    from sklearn.linear_model import LinearRegression,Lasso,Ridge,ElasticNet
    from sklearn.cross_decomposition import PLSRegression
    import warnings 
    warnings.filterwarnings("ignore")
    
    #Regresyon modelleri değişkenlere eşitlendi
    L=LinearRegression()
    La=Lasso()
    R=Ridge()
    E=ElasticNet()
    PLS=PLSRegression()
    #modelleri ve isimlerini bir liste halinde tutalım
    modelList=[L,La,R,E,PLS]
    modelNames=["LinearRegression","Lasso","Ridge","Elastic-Net","PLSRegression"]
    
    #x ve y değerlerine atama yapıldı
    dataset=dataset.dropna(axis=0) #veri setinde boş değişken değeri varsa o satırı kaldıralım.
    x,y=dataset.drop(columnName,axis=1),dataset[[columnName]]
    
    #x değerlerine get_dummies modülü uygulandı
    x=pd.get_dummies(x,drop_first=True)
    
    #x ve y değerlerine train_test_split modülü uygulandı
    x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=.2,random_state=13)
    
    #Model eğitme ve tahminleme işlemleri
    #MSE,RMSE,MSA ve r2_score için boş bir liste oluşturalım
    MSE=[]
    RMSE=[]
    MAE=[]
    R2=[]
    
    for model in modelList:
        #modeli eğitildi
        model.fit(x_train,y_train)
        
        #x_test tahmin edildi
        predictModel=model.predict(x_test)
        
        #MSE,RMSE,MSA ve r2_score listelerine çıkan bu sonuçları eklendi
        MSE.append(mean_squared_error(y_test,predictModel))
        RMSE.append((mean_squared_error(y_test,predictModel)**.5))
        MAE.append(mean_absolute_error(y_test,predictModel))
        R2.append(r2_score(y_test,predictModel))
        
    #Şuan elimizde 5'er tane elemanı bulunan MSE,RMSE,MSA ve r2_score listesi bulunmakta.
    #Bu listeleri bir tablo halinde dışarıya aktaralım.
    datas={"MSE":MSE,"RMSE":RMSE,"MAE":MAE,"R2_SCORE":R2}
    result=pd.DataFrame(data=datas,index=modelNames)
    
    #Sonuçlar "r2_score" değerine göre sıralansın
    return result.sort_values("R2_SCORE",ascending=False)     

Yukarıda bulunan "linearRegressionFunc" isimli yazmış olduğumuz fonksiyona verisetini ve regresyon yapmak istediğimiz değişken ismini verdiğimizde bize 4 tane regresyon modelinde tahminleme yaprak sonucu döndürecektir. Bunu test etmek için bir kaç tane veri setini kullanalım. Ama dikkat edilmesi gereken konu veri seti fonksiyona verilmeden önce EDA işlemleri yapılarak temizlenmelidir, deneme amaçlı temiz veri setleri verelim.

Örnek-1:

#cars veri seti
#"Price" sütununda regresyon yapalım
import pandas as pd
dfCars=pd.read_excel("cars.xls")
dfCars.sample(2)

Çıktı:

 
linearRegressionFunc(dfCars,"Price")

Çıktı:

Örnek-2:

#diamonds veri seti
#"price" sütununda regresyon yapalım
import seaborn as sns
dfDiamonds=sns.load_dataset("diamonds")
dfDiamonds.sample(2)

Çıktı:

linearRegressionFunc(dfDiamonds,"price")

Çıktı:

Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.