线性回归统计指标 SSE、MSE、RMSE、MAE、R-square

文章目录

    • @[toc]
      • 一、SSE(和方差)
      • 二、MSE(均方差)
      • 三、RMSE(均方根)
      • 四、MAE(平均绝对误差)
      • 五、R-square(确定系数)
      • 六、代码部分

SSE(和方差、误差平方和):The sum of squares dueto error
MSE(均方差、方差):Meansquared error
RMSE(均方根、标准差):Root mean squared error
R-square(确定系数):Coefficientof determination
Adjusted R-square:Degree-of-freedomadjusted coefficient of determination

下面我对以上几个名词进行详细的解释下,相信能给大家带来一定的帮助!!

一、SSE(和方差)

该统计参数计算的是拟合数据和原始数据对应点的误差的平方和,计算公式如下
在这里插入图片描述
SSE越接近于0,说明模型选择和拟合更好,数据预测也越成功。接下来的MSE和RMSE因为和SSE是同出一宗,所以效果一样

二、MSE(均方差)

该统计参数是预测数据和原始数据对应点误差的平方和的均值,也就是SSE/n,和SSE没有太大的区别,计算公式如下
在这里插入图片描述

三、RMSE(均方根)

该统计参数,也叫回归系统的拟合标准差,是MSE的平方根,就算公式如下
线性回归统计指标 SSE、MSE、RMSE、MAE、R-square_第1张图片
在这之前,我们所有的误差参数都是基于预测值(y_hat)和原始值(y)之间的误差(即点对点)。从下面开始是所有的误差都是相对原始数据平均值(y_ba)而展开的(即点对全)!!!

四、MAE(平均绝对误差)

五、R-square(确定系数)

在讲确定系数之前,我们需要介绍另外两个参数SSR和SST,因为确定系数就是由它们两个决定的
(1)SSR:Sumof squares of the regression,即预测数据与原始数据均值之差的平方和,公式如下
在这里插入图片描述
(2)SST:Totalsum of squares,即原始数据和均值之差的平方和,公式如下
在这里插入图片描述
细心的网友会发现,SST=SSE+SSR,呵呵只是一个有趣的问题。而我们的“确定系数”是定义为SSR和SST的比值,故
1

六、代码部分

[py]

import numpy as np
from sklearn.metrics import r2_score

class SimpleLinearRegression:

    def __init__(self):
        """初始化Simple Linear Regression模型"""
        self.a_ = None
        self.b_ = None

    def fit(self, x_train, y_train):
        """根据训练数据集x_train, y_train训练Simple Linear Regression模型"""
        assert x_train.ndim == 1, \
            "Simple Linear Regressor can only solve single feature training data."
        assert len(x_train) == len(y_train), \
            "the size of x_train must be equal to the size of y_train"

        x_mean = np.mean(x_train)
        y_mean = np.mean(y_train)

        self.a_ = (x_train - x_mean).dot(y_train - y_mean) / (x_train - x_mean).dot(x_train - x_mean)
        self.b_ = y_mean - self.a_ * x_mean

        return self

    def predict(self, x_predict):
        """给定待预测数据集x_predict,返回表示x_predict的结果向量"""
        assert x_predict.ndim == 1, \
            "Simple Linear Regressor can only solve single feature training data."
        assert self.a_ is not None and self.b_ is not None, \
            "must fit before predict!"

        return np.array([self._predict(x) for x in x_predict])

    def _predict(self, x_single):
        """给定单个待预测数据x,返回x的预测结果值"""
        return self.a_ * x_single + self.b_

    def score(self, x_test, y_test):
        """根据测试数据集 x_test 和 y_test 确定当前模型的准确度:R^2"""

        y_predict = self.predict(x_test)
        return r2_score(y_test, y_predict)

    def __repr__(self):
        return "SimpleLinearRegression()"

调用scikit-learn中的算法

from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error

# MSE
mse_predict = mean_squared_error(y_test, y_predict)

# MAE
mae_predict = mean_absolute_error(y_test, y_predict)

# y_test:测试数据集中的真实值
# y_predict:根据测试集中的x所预测到的数值

你可能感兴趣的:(机器学习,统计学习方法)