Python计算统计分析MSE RMSE MAEr2

Posted zNULLT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python计算统计分析MSE RMSE MAEr2相关的知识,希望对你有一定的参考价值。

平均绝对误差

(MAE)Mean Absolute Error,是绝对误差的平均值,能更好地反映预测值误差的实际情况.

均方误差

MSE(mean-square error) 该统计参数是预测数据和原始数据对应点误差的平方和的均值

均方根误差

Root Mean Square Error求均方误差的根号

决定系数R2

决定系数R2(coefficient of determination),也称判定系数或者拟合优度。它是表征回归方程在多大程度上解释了因变量的变化,或者说方程对观测值的拟合程度如何。拟合优度的有效性通常要求:自变量个数:样本数>1:10。


所以要想决定系数R2越接近1,必须满足MSE越小,也就是真实值与预测值相差不大,也就是模型拟合程度高,同时var方差越大,也就是我们的样本离散程度大,对应的我们实际采样过程中,就是要求样本是随机性,以及全面性,覆盖度广

注意

决定系数适用于线性回归,单变量或者多元线性;y=ax或者y=ax1+bx2…;拟合模型是非线性的,不能用决定系数来评价其拟合效果,例如:BP神经网络
当拟合程度不行,可以调整参数或者权重-例如a,b,使预测值与真实值越接近

方差

方差(variance)的计算公式:S²=1/n [(x1-X)²+(x2-X)²+(x3-X)²+…(xn-X)²] (X表示平均数)。
方差在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度
统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。

代码实现

#导入相应的函数库
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
import numpy as np
import pandas as pd
         
#加载数据
data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep="\\s+", skiprows=22, header=None)
bos_house_data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
bos_house_target = raw_df.values[1::2, 2]

#建模分析
x_train,x_test,y_train,y_test = train_test_split(bos_house_data,bos_house_target,random_state=41)
forest_reg = RandomForestRegressor(random_state=41)
forest_reg.fit(x_train,y_train)
y_predict = forest_reg.predict(x_test)
# 使用sklearn调用衡量线性回归的MSE 、 RMSE、 MAE、r2
from math import sqrt
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
print("mean_absolute_error:", mean_absolute_error(y_test, y_predict))
print("mean_squared_error:", mean_squared_error(y_test, y_predict))
print("rmse:", sqrt(mean_squared_error(y_test, y_predict)))
print("r2 score:", r2_score(y_test, y_predict))
#原生实现
# 衡量线性回归的MSE 、 RMSE、 MAE、r2
mse = np.sum((y_test - y_predict) ** 2) / len(y_test)
rmse = sqrt(mse)
mae = np.sum(np.absolute(y_test - y_predict)) / len(y_test)
r2 = 1-mse/ np.var(y_test)#均方误差/方差
print(" mae:",mae,"mse:",mse," rmse:",rmse," r2:",r2)

均方误差(MSE)和均方根误差(RMSE)和平均绝对误差(MAE)

RMSE

  • Root Mean Square Error,均方根误差
  • 是观测值与真值偏差的平方和与观测次数m比值的平方根。
  • 是用来衡量观测值同真值之间的偏差

MAE

  • Mean Absolute Error ,平均绝对误差
  • 是绝对误差的平均值
  • 能更好地反映预测值误差的实际情况.

标准差

  • Standard Deviation ,标准差
  • 是方差的算数平方根
  • 是用来衡量一组数自身的离散程度

以上是关于Python计算统计分析MSE RMSE MAEr2的主要内容,如果未能解决你的问题,请参考以下文章

回归任务中的评价指标之MSE,RMSE,MAE,R-Squared,MAPE

均方误差(MSE)和均方根误差(RMSE)和平均绝对误差(MAE)

为啥使用 XGBoost 的 rmse 和 mse 如此之大?

杜克大学mae和乔治城大学mse选哪个

杜克大学mae和乔治城大学mse选哪个

回归模型的评估+MAEMSERMSEMAPESMAPER-squared