回归评价指标MSE、RMSE、MAE、MAPE及python实现
回归评价指标公式
假设: 预测值: y ^ = { y 1 ^ , y 2 ^ , … , y n ^ } hat{y}={hat{y_1},hat{y_2},…,hat{y_n}} y^={ y1^,y2^,…,yn^} 真实值: y = { y 1 , y 2 , … , y n } y={y_1,y_2,…,y_n} y={ y1,y2,…,yn}
MSE
均方误差 – Mean Square Error M S E = 1 n ∑ i = 1 n ( y i ^ − y i ) 2 MSE=frac{1}{n}sum_{i=1}^n(hat{y_i}-y_i)^2 MSE=n1i=1∑n(yi^−yi)2
RMSE
均方根误差 – Root Mean Square Error R M S E = 1 n ∑ i = 1 n ( y i ^ − y i ) 2 RMSE=sqrt{frac{1}{n}sum_{i=1}^n(hat{y_i}-y_i)^2} RMSE=n1i=1∑n(yi^−yi)2
MAE
平均绝对误差 – Mean Absolute Error M A E = 1 n ∑ i = 1 n ∣ y i ^ − y i ∣ MAE=frac{1}{n}sum_{i=1}^n|hat{y_i}-y_i| MAE=n1i=1∑n∣yi^−yi∣
MAPE
平均绝对百分比误差 – Mean Absolute Percentage Error M A P E = 100 % n ∑ i = 1 n ∣ y i ^ − y i y i ∣ MAPE=frac{100\%}{n}sum_{i=1}^n|frac{hat{y_i}-y_i}{y_i}| MAPE=n100%i=1∑n∣yiyi^−yi∣
python实现
numpy
numpy的范数可以实现 MSE、RMSE、MAE,也可以都自己写。
numpy范数说明: x_norm = np.linalg.norm(x, ord=None, axis=None, keepdims=False)
import numpy as np y = np.array([1,1]) y_hat = np.array([2,3]) ## 利用范数实现 ## MSE--相当于y-y_hat的二阶范数的平方/n MSE = np.linalg.norm(y-y_hat, ord=2)**2/len(y) ## RMSE--相当于y-y_hat的二阶范数/根号n RMSE = np.linalg.norm(y-y_hat, ord=2)/len(y)**0.5 ## MAE--相当于y-y_hat的一阶范数/n MAE = np.linalg.norm(y-y_hat, ord=1)/len(y) ## 自己写 MSE = np.mean(np.square(y - y_hat)) RMSE = np.sqrt(np.mean(np.square(y - y_hat))) MAE = np.mean(np.abs(y-y_hat)) MAPE = np.mean(np.abs((y - y_hat) / y)) * 100
sklearn
sklearn.metrics 可以实现 MSE、RMSE、MAE
from sklearn import metrics y = np.array([1,1]) y_hat = np.array([2,3]) MSE = metrics.mean_squared_error(y, y_hat) RMSE = metrics.mean_squared_error(y, y_hat)**0.5 MAE = metrics.mean_absolute_error(y, y_hat) MAPE = metrics.mean_absolute_percentage_error(y, y_hat)