python回归算法预测数据,python实现对率回归
回归算法的模型评估类似于分类算法的模型评估。——求实际标签和预测值的差。在分类算法中,判断是否预测到正确的分类,而在我们的回归算法中,判断是否预测到正确的数值,是否拟合出足够的信息。
绝对误差MAE
-预测值是否正确?
Sklearn使用RSS的变化,均方差(MSE)来衡量我们的预测值和实际值之间的差异:
均方差MSE
在sklearn中,我们有两种方式调用这个评价指标,一种是使用sklearn专用的模型评价模块metrics中的类mean_squared_error,另一种是调用交叉验证的类cross_val_score,使用评分参数设置均方误差。
sk learn . metrics . mean _ squared _ error(y _ True,y_pred,*,sample_weight=None,multioutput=uniform_average ,squared=True)
sk learn . model _ selection . cross _ val _ score(reg,X,y,cv=10,scoring== neg _ mean _ squared _ error )平方bool,default=True如果True返回MSE值,如果False返回RMSE值。
注意这里评分== neg _ mean _ squared _ error 。均方差为负是因为sklearn在计算模型的评价指标时认为均方差本身就是一个误差,是模型的损失。在sklearn中,所有的损失都表示为负数,所以均方误差也表示为负数。
RMSE误差
RMSE是MSE的算术平方根
缺点:由于使用了平均误差,平均误差对异常值敏感,异常值的出现使RMSE误差变大。
示例:
从sklearn.metrics导入均方误差
y_true=[3,-0.5,2,7]
y_pred=[2.5,0.0,2,8]
均方误差(y真实,y预测)
0.375
y_true=[3,-0.5,2,7]
y_pred=[2.5,0.0,2,8]
mean_squared_error(y_true,y_pred,squared=False)
0.612 .
y_true=[[0.5,1],[-1,1],[7,-6]]
y_pred=[[0,2],[-1,2],[8,-5]]
均方误差(y真实,y预测)
0.708 .
mean_squared_error(y_true,y_pred,squared=False)
0.822 .
mean_squared_error(y_true,y_pred,multioutput=raw_values )
数组([0.41666667,1。])
mean_squared_error(y_true,y_pred,multioutput=[0.3,0.7])
0.825 .
您也可以使用sklearn中的命令。度量导入mean _ absolute _ error以调用MAE在sklearn。交叉验证中的scoring= neg _ mean _ absolute _ error 来调用MAE。
sk learn . metrics . mean _ absolute _ error(y _ true,y_pred,*,sample_weight=None,multioutput=uniform_average )
从sklearn.metrics导入mean_absolute_error
y_true=[3,-0.5,2,7]
y_pred=[2.5,0.0,2,8]
mean_absolute_error(y_true,y_pred)
0.5
y_true=[[0.5,1],[-1,1],[7,-6]]
y_pred=[[0,2],[-1,2],[8,-5]]
mean_absolute_error(y_true,y_pred)
0.75
mean_absolute_error(y_true,y_pred,multioutput=raw_values )
数组([0.5,1。])
mean_absolute_error(y_true,y_pred,multioutput=[0.3,0.7])
0.85 .如果multioutput为 raw_values ,则单独返回每个输出的绝对平均误差。
如果multioutput为 uniform_average 或ndarray of weights,则返回所有输出误差的加权平均值。
R 2(决定系数)
-是否有足够的信息?
方差的本质是任何值和样本均值之间的差异。差异越大,这些值携带的信息就越多。这可以用来衡量数据的信息量。如果方差越大,代表数据上的信息就越多,而这些信息不仅包括数值的大小,还包括模型期望捕捉的规律。
天生用来衡量模型对数据信息的捕捉。
总平方和(SST)=回归平方和(SSR)残差平方和(SSE)
其中,
是一个真正的标签,
为了预测结果,
是样本均值。
特定样本量
是样本方差。数学理解:
1,
测量的是1-模型不适合的信息占真实标签中携带的信息量。
2.分母理解为原始数据的离散度和方差,即真实标签承载的信息量。
3.分子是预测数据与原始数据的误差,残差平方和模型没有拟合信息。
4.将两者分开可以消除原始数据的离散程度的影响。
理论上取值(,1),正常值范围为[0,1]。越接近1,模型就越符合数据。
越接近0,模型拟合越差。
小于0(负),表示模型拟合的所有信息都小于残差平方和。
缺点:数据集样本越大,R2越大。
在比较不同数据集的模型结果时会有一些误差。
可以用三种方式调用。一种是从metrics导入r2_score,输入预测值和真实值,然后打分。第二种是从LinearRegression的接口分数调用。第三,在交叉验证中,输入scoring=r2 进行调用。
sk learn . metrics . R2 _ score(y _ true,y_pred,*,sample_weight=None,multioutput=uniform_average )
从sklearn.metrics导入r2_score
y_true=[3,-0.5,2,7]
y_pred=[2.5,0.0,2,8]
r2_score(y_true,y_pred)
0.948 .
y_true=[[0.5,1],[-1,1],[7,-6]]
y_pred=[[0,2],[-1,2],[8,-5]]
r2_score(y_true,y_pred,
.multioutput=方差加权)
0.938 .
y_true=[1,2,3]
y_pred=[1,2,3]
r2_score(y_true,y_pred)
1.0
y_true=[1,2,3]
y_pred=[2,2,2]
r2_score(y_true,y_pred)
0.0
y_true=[1,2,3]
y_pred=[3,2,1]
r2_score(y_true,y_pred)
-3.0multioutput: {raw_values , uniform_average , variance_weighted},shape的数组like(n _ output,)或None,默认值=uniform_average
定义多个输出分数的汇总。类别值定义用于平均分数的权重。默认设置为“统一平均”。
Raw_values :在多个输入和输出的情况下返回完整的分数集。
Uniform_average :用相同的权重平均所有输出的分数。
Variance_weighted :所有输出的分数被平均,并由每个单独输出的方差加权。
更多详情请参考原文链接:机器学习简单强大的线性回归详细讲解mp.weixin.qq.com。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。