各位读者大家好!在我们的误差指标系列中,我们已经理解并实现了均方根误差。
今天,我们将重点关注模型构建中的另一个重要误差指标——Python 中的平均绝对百分比误差 (MAPE)。
什么是MAPE?
平均绝对百分比误差 (MAPE)是一种统计度量,用于定义机器学习算法在特定数据集上的准确性。
MAPE 可以被视为一种损失函数,用于定义模型评估所称的误差。使用 MAPE,我们可以根据实际 v/s 估计值的差异来估计准确性。
让我们看看下面对平均绝对百分比误差的解释——
如上所示,在 MAPE 中,我们最初计算实际值 (A)和估计/预测值 (F)之间的绝对差。此外,我们对结果应用均值函数以获得 MAPE 值。
MAPE 也可以用百分比表示。MAPE 越低,模型拟合效果越好。
NumPy 模块的平均绝对百分比误差
现在让我们使用Python NumPy 模块来实现 MAPE 。
首先,我们将数据集导入到环境中。您可以在此处找到数据集。
此外,我们使用 Python train_test_split() 函数将数据集拆分为训练数据集和测试数据集。
然后,我们定义了一个函数来实现 MAPE,如下所示:
- 计算实际值和预测值之间的差异。
- 然后,使用
numpy.abs() function
求出上述差值的绝对值。 - 最后,申请
numpy.mean() function
获取MAPE。
例子:
import numpy as np from sklearn.model_selection import train_test_split import pandas as pd bike = pd.read_csv( "Bike.csv" ) #Separating the dependent and independent data variables into two data frames. X = bike.drop([ 'cnt' ],axis = 1 ) Y = bike[ 'cnt' ] # Splitting the dataset into 80% training data and 20% testing data. X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = . 20 , random_state = 0 ) #Defining MAPE function def MAPE(Y_actual,Y_Predicted): mape = np.mean(np. abs ((Y_actual - Y_Predicted) / Y_actual)) * 100 return mape |
现在,我们已经实现了线性回归来使用 MAPE 检查模型的错误率。
在这里,我们LinearRegression() function
对数据集应用了线性回归。此外,我们使用Predict() 函数 来预测测试数据集的值。
最后,我们调用上面创建的MAPE() 函数来估计预测中的误差值,如下所示:
#Building the Linear Regression Model from sklearn.linear_model import LinearRegression linear_model = LinearRegression().fit(X_train , Y_train) #Predictions on Testing data LR_Test_predict = linear_model.predict(X_test) # Using MAPE error metrics to check for the error rate and accuracy level LR_MAPE = MAPE(Y_test,LR_Test_predict) print ( "MAPE: " ,LR_MAPE) |
输出:
MAPE: 16.628873360270358 |
Python scikit learn 库的平均绝对百分比误差
在此示例中,我们使用 Python sklearn 库实现了 MAPE 的概念。
Python sklearn 库为我们提供了mean_absolute_error() function
计算 MAPE 值的方法,如下所示 –
例子:
from sklearn.metrics import mean_absolute_error Y_actual = [ 1 , 2 , 3 , 4 , 5 ] Y_Predicted = [ 1 , 2.5 , 3 , 4.1 , 4.9 ] mape = mean_absolute_error(Y_actual, Y_Predicted) * 100 print (mape) |
输出:
13.999999999999984 |
结论
至此,我们这个话题就结束了。如果您遇到任何问题,请随时在下面发表评论。
有关更多与 Python 相关的此类帖子,请继续关注这里,直到那时,快乐学习!🙂