Makine Öğrenmesi - Genel Konular
Doğrusal ve Doğrusal Olmayan Regresyonları Birlikte Kullanma - l
Yazar:
Enes ASAN
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ı: