Makine Öğrenmesi - Genel Konular

Doğrusal ve Doğrusal Olmayan Regresyonları Birlikte Kullanma - l

Yayın tarihi :12-Oca-22
Bölüm kodlarını ve/veya veri setlerini indir.

Doğrusal ve doğrusal olmayan regresyonları birlikte kullanarak ilgili veri setine ait tüm regrasyon sonuçlarını görmek için 1. yöntem olarak, Doğrusal Regresyonları Birlikte Kullanma ve Doğrusal Olmayan Regresyonları Birlikte Kullanma başlıkları altında ayrı ayrı yapılan fonksiyonları tek çatı altında toplayarak yapılabilir.

Yapılan regresyon modelleri listesi:

  • LinearRegression
  • Lasso
  • Ridge
  • Elastic-Net
  • PLSRegression
  • KNeighborsRegressor
  • SVR
  • MLPRegressor
  • DecisionTreeRegressor
  • ExtraTreeRegressor
  • BaggingRegressor
  • RandomForestRegressor
  • ExtraTreesRegressor
  • GradientBoostingRegressor
  • XGBRegressor
  • LGBMRegressor 
def Regression(dataset,columnName):
    
    #İlgili kütüphaneler 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
    import warnings
    warnings.filterwarnings("ignore")
    
    #Doğrusal regresyon modelleri
    from sklearn.linear_model import LinearRegression,Lasso,Ridge,ElasticNet
    from sklearn.cross_decomposition import PLSRegression
    
    #Doğrusal olmayan regresyon modelleri
    from sklearn.neighbors import KNeighborsRegressor
    from sklearn.svm import SVR
    from sklearn.neural_network import MLPRegressor
    from sklearn.tree import DecisionTreeRegressor,ExtraTreeRegressor
    from sklearn.ensemble import BaggingRegressor,RandomForestRegressor,ExtraTreesRegressor,GradientBoostingRegressor
    from xgboost import XGBRegressor #yüklemek için: pip install xgboost
    from lightgbm import LGBMRegressor #yüklemek için: pip install lightgbm
        
    
    #Regresyon modelleri değişkenlere eşitlendi
    L=LinearRegression()
    La=Lasso()
    R=Ridge()
    E=ElasticNet()
    PLS=PLSRegression()
    KNN=KNeighborsRegressor()
    svr=SVR()
    MLP=MLPRegressor()
    DTR=DecisionTreeRegressor()
    ETR=ExtraTreeRegressor()
    BR=BaggingRegressor()
    RFR=RandomForestRegressor()
    ETR2=ExtraTreesRegressor()
    GBR=GradientBoostingRegressor()
    XGB=XGBRegressor()
    LGBM=LGBMRegressor()
  
    #modelleri ve isimlerini bir liste halinde tutalım
    modelList=[L,La,R,E,PLS,KNN,svr,MLP,DTR,ETR,BR,RFR,ETR2,GBR,XGB,LGBM]
    modelNames=["LinearRegression","Lasso","Ridge","Elastic-Net","PLSRegression","KNeighborsRegressor","SVR","MLPRegressor",
                "DecisionTreeRegressor","ExtraTreeRegressor","BaggingRegressor","RandomForestRegressor",
                "ExtraTreesRegressor","GradientBoostingRegressor","XGBRegressor","LGBMRegressor"]
    
    #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:
        #model 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 16'şar 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)  

Regression fonksiyonunu örnekler üzerinde uygulayalım.

Örnek-1:

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

Çıktı:

Regression(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ı:

Regression(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.