衡量线性回归算法的指标

文章目录

  • 一、MSE
  • 二、RMSE
  • 三、MAE
  • 四、mse,rmse,mae代码实现
  • 五、相对而言 最好的评价指标 R Squared
    • 1、R squared 代码实现

一、MSE

衡量线性回归算法的指标_第1张图片
但MSE均方误差有个缺点 就是MSE与y的量纲不同 比如y的量纲为万元 那MSE的量纲就是万元的平方。

二、RMSE

衡量线性回归算法的指标_第2张图片

三、MAE

RMSE的量纲与原始y的量纲相同
衡量线性回归算法的指标_第3张图片

四、mse,rmse,mae代码实现

注意:线性回归衡量指标
在这里使用波士顿房价这个数据集 并且只用了RM平均房间这个样本特征

#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]  #只用平均房间数这一个样本特征
y=boston.target
x=x[y<50] #这里是为了去掉一些不真实的点 可以自己绘图看 图中会有一些最大值50 该数据不真实
y=y[y<50]
from sklearn.metrics import mean_squared_error,mean_absolute_error
from sklearn.model_selection import train_test_split

x_train,x_test,y_train,y_test=train_test_split(x,y)
plt.scatter(x_train,y_train)
plt.plot(x_train,reg.predict(x_train),color="red")
from SimpleLinearRegression1 import SimpleLinearRegression1
reg=SimpleLinearRegression1()
reg.fit(x_train,y_train)
y_predict=reg.predict(x_test)
mse=mean_squared_error(y_test,y_predict)
from math import sqrt
rmse=sqrt(mse)
mae=mean_absolute_error(y_test,y_predict)
print(mse,rmse,mae)

结果:
衡量线性回归算法的指标_第4张图片

	注意到:rmse与mae的量纲相同,但是rmse却比mae的值要大,这是由于两个计算方式不同。rmse有个平方,
	这会放大真实值与预测值之间的误差。除了绝对值不可导之外,这也就是为什么我们计算最小损失函数要使用平方。因为这更能说明误差的最小值。
	rmse会放大真实值与预测值之间的误差,能更好的说明结果之间的误差。
	选择相对而言会得到更大误差的算法来求取最小损失函数会使我们得到的线性方程与真实值更拟合。
	sklearn中有mse与mae的api但没有rmse的api,对mse取根号就是rmse

五、相对而言 最好的评价指标 R Squared

不论是rmse还是mae ,如果我们将其运用到两个不同的指标上,比如房价和分数,我们得到的是不同的值,无法评判到底这个模型是用在哪个问题上更好。
结合分类问题中的准确度accuracy 它的范围是0-1 1最好 0最差。
我们是否也可以做出一个统一评判标准呢?
这里就出现了 R 2
衡量线性回归算法的指标_第5张图片
衡量线性回归算法的指标_第6张图片

	我们可以知道 使用y的均值这个模型来预测必然会产生很大的误差

衡量线性回归算法的指标_第7张图片

	在这里 r2是可能小于0的,证明我们的模型还不如基本模型,此时可能不存在线性关系。

衡量线性回归算法的指标_第8张图片

 var即方差 std是标准差

1、R squared 代码实现

import numpy as np
#自己计算
r2=1-mean_squared_error(y_test,y_predict)/np.var(y_test)
#sklearn中有api 直接调用
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
r=r2_score(y_test,y_predict)

你可能感兴趣的:(机器学习,算法,线性回归,python)