笔记——衡量回归算法的标准&&最好的评价指标R Square

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


最好的衡量指标:R Square

SimpleLinearRegression中默认封装R Square这种指标在score函数中,用于评价线性回归算法的准确度


R方=1-MSE/方差


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

波士顿房产数据

boston=datasets.load_boston()

boston.DESCR

boston.feature_names

x=boston.data[:,5] # 只使用房间数量RM这个特征

y=boston.target

plt.scatter(x,y)
<matplotlib.collections.PathCollection at 0x24ecc17e0c8>

在这里插入图片描述

np.max(y)
50.0
x=x[y<50.0]
y=y[y<50.0]
plt.scatter(x,y)
<matplotlib.collections.PathCollection at 0x24ecc233d08>

在这里插入图片描述

进行数据分割

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=666)
print(x_train.shape)
print(y_train.shape)
(392,)
(392,)
print(x_test.shape)
print(y_test.shape)
(98,)
(98,)

简单线性回归

from SimpleLinearRegression import SimpleLinearRegression2

reg=SimpleLinearRegression2()

reg.fit(x_train,y_train)
SimpleLinearRegression2()
reg.a_
7.8608543562689555
reg.b_
-27.459342806705543
plt.scatter(x_train,y_train)
plt.plot(x_train,reg.predict(x_train),color='r')
[<matplotlib.lines.Line2D at 0x24ecc35e548>]

在这里插入图片描述

y_predict=reg.predict(x_test)

衡量指标

MSE

mse_test=np.sum((y_predict-y_test)**2)/len(y_test)
mse_test
24.156602134387438

RMSE

from math import sqrt
rmse_test=sqrt(mse_test)
rmse_test
4.914936635846635

MAE

mae_test=np.sum(np.absolute(y_predict-y_test))/len(y_test)
mae_test
3.5430974409463873

sklearn中的MSE和MAE

from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
mean_squared_error(y_test,y_predict)
24.156602134387438
mean_absolute_error(y_test,y_predict)
3.5430974409463873

RMSE误差比MAE要大一些,因为它有平方,会放大误差最大的那个数据的误差,和线性回归算法的目标是一样的,都要减小损失函数;而MAE没什么影响

自己写的MSE、RMSE、MAE

from metrics import mean_squared_error
from metrics import mean_absolute_error
from metrics import root_mean_squared_error
mean_squared_error(y_test,y_predict)
24.156602134387438
mean_absolute_error(y_test,y_predict)
3.5430974409463873
root_mean_squared_error(y_test,y_predict)
4.914936635846635

R Square

1-mean_squared_error(y_test,y_predict)/np.var(y_test)
0.6129316803937322
from metrics import r2_score
r2_score(y_test,y_predict)
0.6129316803937322
from sklearn.metrics import r2_score
r2_score(y_test,y_predict)
0.6129316803937324
reg.score(x_test,y_test) #SimpleLinearRegression中score函数为R square
0.6129316803937322

猜你喜欢

转载自blog.csdn.net/chairon/article/details/107334740