numpy、pandas实用总结(MSE、RMSE、r2)

MSE

MSE(Mean Squared Error),平均平方误差,为所有样本误差(真实值与预测值之差)的平方和,然后取均值。

M S E = 1 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 MSE = \frac{1}{m}\sum_{i=1}^{m}(y ^ {(i)} - \hat{y} ^ {(i)}) ^ {2} MSE=m1i=1m(y(i)y^(i))2

RMSE

RMSE(Root Mean Squared Error),平均平方误差的平方根,即在MSE的基础上,取平方根。

R M S E = M S E = 1 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 RMSE = \sqrt{MSE} = \sqrt{\frac{1}{m}\sum_{i=1}^{m}(y ^ {(i)} - \hat{y} ^ {(i)}) ^ {2}} RMSE=MSE =m1i=1m(y(i)y^(i))2

R 2 R ^ {2} R2

R 2 R ^ {2} R2为决定系数,用来表示模型拟合性的分值,值越高表示模型拟合性越好,最高为1,可能为负值。
R 2 R ^ {2} R2的计算公式为1减去RSS与TSS的商。其中,TSS(Total Sum of Squares)为所有样本与均值的差异,是方差的m倍。而RSS(Residual sum of squares)为所有样本误差的平方和,是MSE的m倍。

R 2 = 1 − R S S T S S = 1 − ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 ∑ i = 1 m ( y ( i ) − y ‾ ) 2 y ‾ = 1 m ∑ i = 1 m y ( i ) R ^ {2} = 1 - \frac{RSS}{TSS} = 1 - \frac{\sum_{i=1}^{m}(y ^ {(i)} - \hat{y} ^ {(i)}) ^ {2}} {\sum_{i=1}^{m}(y ^ {(i)} - \overline{y}) ^ {2}} \\ \overline{y} = \frac{1}{m}\sum_{i=1}^{m}y ^ {(i)} R2=1TSSRSS=1i=1m(y(i)y)2i=1m(y(i)y^(i))2y=m1i=1my(i)

从公式定义可知,最理想情况,所有的样本的预测值与真实值相同,即RSS为0,此时 R 2 R ^ {2} R2为1。

代码实现

from sklearn.metrics import mean_squared_error, r2_score
import numpy as np 
print(f"均方误差(MSE):{mean_squared_error(result, test_y)}")
print(f"根均方误差(RMSE):{np.sqrt(mean_squared_error(result, test_y))}")
print(f"测试集R^2:{r2_score(test_y, result)}")

你可能感兴趣的:(数据分析)