线性回归模型评估:R |
您所在的位置:网站首页 › 方差分析ssr怎么算 › 线性回归模型评估:R |
线性回归模型评估
通过几个参数验证回归模型 SSE(和方差,误差平方和) :The sum of squares due to errorMSE(均方差,方差):Mean squared errorRMSE(均方根,标准差):Root mean squared errorR-square(确定系数):Coefficient of determination(主要用R方来做评估) 1.SSE(和方差)该统计参数计算的是拟合数据和原始数据对应点的误差的平方和,计算公式如下: SSE越接近于0,说明模型选择和拟合更好,数据预测也越成功。 2.MSE(均方差)该统计参数是预测数据和原始数据对应点误差的平方和的均值,也就是SSE/n,和SSE没有太大的区别,计算公式如下: 3.RMSE(均方根)该统计参数,也叫回归系数的拟合标准差,是MSE的平方根,计算公式如下: 在这之前,我们所有的误差参数都是基于预测值(y_hat)和原始值(y)之间的误差(即点对点)。从下面开始是所有的误差都是相对原始数据平均值(y_ba)而展开的(即点对全)!!! 4.R-square(确定系数)R -square越接近1,越好,大于0.8就不错了。 在讲确定系数之前,我们需要介绍另外两个参数SSR和SST,因为确定系数就是由它们两个决定的 (1)SSR:Sum of squares of the regression,即预测数据与原始数据均值之差的平方和,公式如下: (2)SST:Total sum of squares,即原始数据和均值之差的平方和,公式如下: 细心的读者会发现,SST=SSE+SSR,呵呵只是一个有趣的问题。而我们的“确定系数”是定义为SSR和SST的比值,故 其实“确定系数”是通过数据的变化来表征一个拟合的好坏。由上面的表达式可以知道“确定系数”的正常取值范围为[0 1],越接近1,表明方程的变量对y的解释能力越强,这个模型对数据拟合的也较好。 附代码: import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline from sklearn import metrics from sklearn.linear_model import LinearRegression #random_state=1指的是伪随机数生成器的种子 #创建数据 rng = np.random.RandomState(1) xtrain = 10 * rng.rand(30)#生成30个数 ytrain = 8 + 4*xtrain + rng.rand(30)*3 #生成30个数,与上面30个数不同 #创建模型,用训练集拟合模型 model = LinearRegression() model.fit(xtrain[:,np.newaxis],ytrain)#np.newaxis插入新维度,xtrain给的是一列数据 ytest = model.predict(xtrain[:,np.newaxis]) # ytest = 根据X评估出来的y值 mse = metrics.mean_absolute_error(ytrain,ytest)#均方差 rmse = np.sqrt(mse)#均方根 print(mse) print(rmse) ssr = ((ytest - ytrain.mean())**2).sum() # 预测数据和原始均值之差 的平方和 sst = ((ytrain - ytrain.mean())**2).sum() # 原始数据 和 均值之差 的平方和 r2 = ssr/sst print(r2)结果: 0.7797031388892226 0.8830080061297421 0.9946452159695 第二种计算R2的方式(确定系数) r22 = model.score(xtrain[:,np.newaxis],ytrain) print(r22)结果: 0.9946452159694995 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |