美文网首页
7.8 回归模型评估与交叉验证

7.8 回归模型评估与交叉验证

作者: 操作系统 | 来源:发表于2017-06-16 13:57 被阅读0次

回归模型评估有三种方法,分别是:平均绝对值误差、均方误差和R平方值,如表1所示:

指标 描述 metrics方法
Mean Absolute Error(MAE) 平均绝对误差 from sklearn.metrics import mean_absolute_error
Mean Square Error(MSE) 平均方差 from sklearn.metrics import mean_squared_error
R-Squared R平方值 from sklearn.metrics import r2_score

7.8.1 平均绝对误差

平均绝对误差(MAE)就是指预测值与真实值之间平均相差多大,公式如下:

图1 平均绝对误差(MAE)

其中,fi是预测值,yi是真实值,ei=|fi-yi|即是绝对误差。
  sklearn库的metrics模块提供了mean_absolute_error方法,用来评估回归模型,首先建立数据集和线性回归模型对测试集数据进行预测,示例代码:

# 创建数据集,其中矩阵X表示特征值,向量y表示所属类目标记值
import numpy as np
X=np.random.random((10,5))
y=np.random.randn(10,1)

# 数据切分为训练集和测试集
from sklearn.cross_validation import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=0)

# 利用线性回归模型对数据进行拟合
from sklearn.linear_model import LinearRegression
lr=LinearRegression(normalize=True)
lr.fit(X_train,y_train)
 
# 对测试集数据预测
y_pred = lr.predict(X_test)
print(y_pred)
print(y_test)

运行结果:

[[-1.34421249]
 [-0.07903063]
 [-1.56484151]]
[[-0.3252582 ]
 [-1.31381548]
 [ 0.00690077]]

然后利用引入平均绝对误差方法对模型进行评估,示例代码:

from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_test, y_pred)

运行结果:

1.275160473519662

7.8.2 平均方差

均方误差是指参数估计值与参数真值之差平方的期望值,记为MSE。MSE是衡量平均误差的一种较方便的方法,MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。均方误差的公式如下:

图6 均方误差

sklearn库的metrics模块提供了mean_squared_error方法,用来对回归模型进行均方误差评估,示例代码:

from sklearn.metrics import mean_squared_error
mean_squared_error(y_test, y_pred)

运行结果:

1.6777784223212659

7.8.3 R平方值

它是表征回归方程在多大程度上解释了因变量的变化,或者说方程对观测值的拟合程度如何。其公式如图7所示:

图7 R平均值

sklearn库的metrics模块提供了r2_score方法,用来对回归模型进行R平方值评估,示例代码:

from sklearn.metrics import r2_score
r2_score(y_test, y_pred)

运行结果:

-4.3321743235578118

7.:8.4 交叉验证(Cross-Validation)

交叉验证,有的时候也称作循环估计(Rotation Estimation),是一种统计学上将数据样本切割成较小子集的实用方法,该理论是由Seymour Geisser提出的。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次。把每个样本的预报误差平方加和,称为PRESS(predicted Error Sum of Squares)。
  交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set)。首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。
  无论分类还是回归模型,都可以利用交叉验证,进行模型评估,示例代码:

from sklearn.cross_validation import cross_val_score
print(cross_val_score(knn, X_train, y_train, cv=4))
print(cross_cal_score(lr, X, y, cv=2))

相关文章

  • 7.8 回归模型评估与交叉验证

    回归模型评估有三种方法,分别是:平均绝对值误差、均方误差和R平方值,如表1所示: 7.8.1 平均绝对误差 平均绝...

  • 复习 - 模型测试

    一、模型测试的API总结 1、分类算法评估方式 2、回归算法评估方式 二、分类模型测试 交叉验证:(Cross V...

  • 2020-04-01

    线性回归模型:线性回归对于特征的要求;处理长尾分布;理解线性回归模型;模型性能验证:评价函数与目标函数;交叉验证方...

  • 7.cross_validation_and_grid_sear

    1.模型的评估与参数调优 1.1交叉验证/Cross - validation 1.1.1 K折交叉验证 1.1....

  • 交叉验证、模型评估

    1 模型的选择(选超参数) 交叉验证(Cross validation),用于防止模型过于复杂而引起的过拟合,有时...

  • R 交叉验证①

    什么是交叉验证?在机器学习中,交叉验证是一种重新采样的方法,用于模型评估,以避免在同一数据集上测试模型。交叉验证的...

  • 交叉验证

    交叉验证不会返回一个模型,在调用 cross_val_score 时,内部会构建多个模型,但交叉验证的目的只是评估...

  • (二十七)项目实战|交易数据异常检测(二)-python数据分析

    文章原创,最近更新:2018-06-4 1.交叉验证2.模型评估方法3.正则化惩罚4.逻辑回归模型课程来源: py...

  • 8. 模型的选择与调优

    交叉验证 网格搜索 交叉验证:为了让备评估的模型更加确信准确 *超参数搜索-网格搜索: 网格搜索:通常情况下,有很...

  • 机器学习笔记(一)——交叉验证

    交叉验证问题 什么是交叉验证     交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,...

网友评论

      本文标题:7.8 回归模型评估与交叉验证

      本文链接:https://www.haomeiwen.com/subject/rzyyqxtx.html