您的位置:首页 > 其它

衡量线性回归算法的指标——MSE,RMSE,MAE,R_Squared

2018-10-10 19:43 981 查看

衡量标准

其中衡量标准是和m有关的,因为越多的数据量产生的误差和可能会更大,但是毫无疑问越多的数据量训练出来的模型更好,为此需要一个取消误差的方法,如下

MSE 的缺点,量纲不准确,如果y的单位是万元,平方后就变成了万元的平方,这可能会给我们带来一些麻烦

[code]def mean_squared_error(y_true,y_predict):
"""计算y_true和y_predict之间的MES"""
assert len(y_true) == len(y_predict), \
"the size of y_true must be equal to be the size of y_predict"
return np.sum((y_true - y_predict) ** 2 ) / len(y_true)

def root_mean_squared_error(y_true,y_predict):
"""计算y_true和y_predict之间的RMES"""
assert len(y_true) == len(y_predict), \
"the size of y_true must be equal to be the size of y_predict"
return sqrt(np.sum((y_true - y_predict) ** 2 ) / len(y_true))

def mean_absolute_error(y_true,y_predict):
"""计算y_true和y_predict之间的MAE"""
assert len(y_true) == len(y_predict), \
"the size of y_true must be equal to be the size of y_predict"
return np.sum(np.absolute(y_true - y_predict)) / len(y_true)

 调用sikit learn 的实现:

[code]from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
mean_squared_error(y_test,y_predict)

最好的衡量线性回归法的指标 R Squared 

RMSE 和 MAE的局限性

可能预测房源准确度,RMSE或者MAE的值为5,预测学生的分数,结果的误差是10,这个5和10没有判断性,因为5和10对应不同的单位和量纲,无法比较

解决办法-R Squared简介

R Squared 意义

使用BaseLine Model产生的错误会很大,使用我们的模型预测产生的错误会相对少些(因为我们的模型充分的考虑了y和x之间的关系),用这两者相减,结果就是拟合了我们的错误指标,用1减去这个商结果就是我们的模型没有产生错误的指标

实现:

[code]def r2_score(y_true,y_predict):
"""计算y_true and y_predict 之间的R Square"""
return 1 - mean_squared_error(y_true,y_predict)/np.var(y_true)

sikit learn

[code]from sklearn.metrics import r2_score
r2_score(y_test,y_predict)

将计算分数方法封装到我们的SimpleLinearRegression中

 

[code]from .metrics import r2_score
def score(self, x_test, y_test):
"""根据测试数据集 x_test 和 y_test 确定当前模型的准确度"""

y_predict = self.predict(x_test)
return r2_score(y_test, y_predict)


 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: