回归评价指标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)
经验分享 程序员 微信小程序 职场和发展