回归评价指标MSE、RMSE、MAE、MAPE及python实现

文章目录

    • 回归评价指标公式
      • MSE
      • RMSE
      • MAE
      • MAPE
    • python实现
      • numpy
      • sklearn

回归评价指标公式

假设:
预测值: 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=1n(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=1n(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=1nyi^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=1nyiyi^yi

python实现

numpy

numpy的范数可以实现 MSE、RMSE、MAE,也可以都自己写。

numpy范数说明:
x_norm = np.linalg.norm(x, ord=None, axis=None, keepdims=False)
回归评价指标MSE、RMSE、MAE、MAPE及python实现_第1张图片

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)

你可能感兴趣的:(机器学习,python,numpy,机器学习)