Evaluating Regression Models

Elimizdeki veriyi bir çok model üzerinde machine learning için kullanabiliriz. Peki en doğru modelin hangisi olduğunu nasıl anlıcaz. Evaluating regression konusu bu noktada kullanılmaktadır. Burda yapılan tahminin matematiksel olarak değerlendirildiği 0 ve 1 arasında bir sonuç alınır.

Aslında literaturde error dediğimiz değer residual olarak geçer. Model değerlendirilirken şu işlemler yapılır.

Residual = Y – Y_head

Square Residual = (Y – Y_head)^2

Sum(Square Residual) = Sum((Y – Y_head)^2) –> SSR

Y_avg = a gibi bir değer olsun.

Sum(Square Total) = (Y – Y_avg)^2 –> SST

R_square = 1 – (SSR / SST)

R_square değeri 1’e ne kadar yakınsa model o kadar iyi demektir.

Şimdi, daha önceden kullandığımız Random forest modelini aynı veri seti üzerinde uygulayıp R_square değerini hesaplayalım.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv("C:/MACHINE_LEARNING/RandomForestRegression.csv",
sep = ";",header = None)

x = df.iloc[:,0].values.reshape(-1,1)
y_real = df.iloc[:,1].values.reshape(-1,1)

from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(n_estimators = 100, random_state = 42)
rf.fit(x,y)

y_head = rf.predict(x)

#metrics model değerlendirmelerinde kullanılır.
from sklearn.metrics import r2_score

print("R_score: ", r2_score(y_real,y_head))
#R_score = R_square

output:
R_score:  0.9798724794092587

R_square değerinin oldukça iyi olduğunu görüyoruz.

Lineer regression model için R_square değeri hesaplayalım.

import pandas as pd
df = pd.DataFrame(LinearRegressionDatasetcsv,columns=["deneyim","maas"]

#linear regresyon 
from sklearn.linear_model import LinearRegression
linear_reg = LinearRegression()
x = df.deneyim.values.reshape(-1,1)
y_real = df.maas.values.reshape(-1,1)
y_predict = linear_reg.predict(x)

#evaluating
from sklearn.metrics import r2_score
print("R_score :",r2_score(y_real,y_predict))

#R_score = R_square
output:
R_score : 0.9775283164949902

Yorum bırakın