python回归算法预测数据,python实现对率回归

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: