Python3入门机器学习之3.5衡量线性回归法的指标:MSE,RMSE和MAE

Python3入门机器学习

3.5 衡量线性回归法的指标:MSE,RMSE和MAE

1.线性回归算法的评测:
(1).均方误差MSE(Mean Square Error)
在这里插入图片描述
(2).均方根误差RMSE(Root Mean Squared Error)
在这里插入图片描述
均方根误差RMSE很好的解决了量纲的问题。
(3).平均绝对误差MAE(Mean Absolute Error)
在这里插入图片描述
2.以上三个指标的过程:
(1).首先准备数据,这里我们用sklearn为我们提供的波士顿的房产的数据:
在这里插入图片描述
可以观察到这个数据集有13个特征,而我们只选取“房间数量这一个特征”,对数据进一步处理:
在这里插入图片描述
在这里插入图片描述
有一些点为最大值50,并不真实,将它们去掉:
在这里插入图片描述
(2).再将数据集分为训练数据集和测试数据集,使用简单线性回归法,得到参数a和b,然后用测试数据集来看预测的误差:
在这里插入图片描述
在这里插入图片描述
(3).分别用以上三个指标来评测误差:
在这里插入图片描述
3.根据以上的过程,自己尝试封装三种指标的评测方法:

def mean_squared_error(y_true, y_predict):
    """计算y_true和y_predict之间的MSE"""
    assert len(y_true) == len(y_predict), \
        "the size of y_true must be equal to 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之间的RMSE"""

    return sqrt(mean_squared_error(y_true, y_predict))

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 the size of y_predict"

    return np.sum(np.absolute(y_true - y_predict)) / len(y_true)

4.使用scikit-learn中的MSE和MAE:
在这里插入图片描述
5.RMSE vs MAE:
RMSE和MAE的量纲是一样的,都是原始数据中y对应的那个量纲。但是在具体的实践中我们会发现RMSE比MAE要大一些,这是为什么呢?
在这里插入图片描述
其实通过以上的式子就可以理解,原因就在于RMSE是将这个错误值平方,将这些平方累加后再开跟。如果我们的错误值非常大的话,比如相差100,再平方差距就扩大到了10000,也就是说RMSE有放大预测结果和真实结果之间较大的那个差距的趋势,而MAE没有这样的趋势,它直接反应的就是样本的预测结果和真实结果之间的这一个差距。
也正是因为这个原因,从某种程度上来讲,我们尽量的让RMSE的值更加小,相对来讲它的意义更大一些,因为其实这就意味着我们整个样本的错误中最大的错误值相应的比较小。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值