详解 Scikit-learn 的 metrics.mean_absolute_error函数:平均绝对误差

  • Post category:Python

sklearn.metrics.mean_absolute_error函数简介

sklearn.metrics.mean_absolute_error 是 Scikit-learn 中的一个评估指标,该指标用于衡量预测值与真实值之间的平均绝对误差(MAE)。该指标适用于回归问题,其中目标值是连续的,而不是离散的。

该指标定义为:

$MAE(y, \hat{y}) = \frac{1}{n} \sum_{i=1}^{n}|y_i – \hat{y}_i|$

其中,y是真实的目标值,$\hat{y}$是预测值,n是样本数量。

在实际应用中,通过计算模型预测值与实际值之间的MAE,可以评估模型的预测精度。MAE的值越小,表示模型预测越准确。

sklearn.metrics.mean_absolute_error函数使用方法

sklearn.metrics.mean_absolute_error 函数的使用方法如下:

sklearn.metrics.mean_absolute_error(y_true, y_pred, sample_weight=None, multioutput='uniform_average')

该函数接受以下参数:

  • y_true:真实的目标值,必须是一个数组或稀疏矩阵。
  • y_pred:预测的目标值,必须与y_true具有相同的形状,可以是一个数组或稀疏矩阵。
  • sample_weight:样本权重。如果指定,则必须是一个与y_true具有相同长度的数组或稀疏矩阵,其中每个元素表示相应样本的权重。默认值为None表示所有样本的权重均相等。
  • multioutput:指定如何处理多输出情况。如果值为“raw_values”,则返回每个输出的MAE。如果值为“uniform_average”,则返回所有输出的平均MAE。默认值为“uniform_average”。

下面提供两个实例,演示如何使用 sklearn.metrics.mean_absolute_error 函数:

实例1:使用MAE评估线性回归模型的预测能力

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
from sklearn.datasets import load_boston

# 加载波士顿房价数据集
boston = load_boston()
X = boston.data
y = boston.target

# 训练模型
model = LinearRegression().fit(X, y)

# 预测房价
y_pred = model.predict(X)

# 计算MAE评估模型的预测能力
mae = mean_absolute_error(y, y_pred)
print(f"MAE: {mae:.2f}")

输出结果为:

MAE: 3.27

在该实例中,我们使用了 LinearRegression 模型对波士顿房价数据进行了训练,并对该数据集进行了预测。然后,我们使用 mean_absolute_error 函数计算了预测值和真实值之间的 MAE。结果显示预测值和真实值之间的平均绝对误差为3.27。

实例2:使用MAE评估随机森林分类器的预测能力

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split

# 加载波士顿房价数据集
boston = load_boston()
X = boston.data
y = boston.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练模型
model = RandomForestRegressor(n_estimators=100).fit(X_train, y_train)

# 预测房价
y_pred = model.predict(X_test)

# 计算MAE评估模型的预测能力
mae = mean_absolute_error(y_test, y_pred)
print(f"MAE: {mae:.2f}")

输出结果为:

MAE: 2.18

在该实例中,我们使用了 RandomForestRegressor 模型对波士顿房价数据进行了训练,并在测试集上进行了预测。然后,我们使用 mean_absolute_error 函数计算了预测值和真实值之间的 MAE。结果显示预测值和真实值之间的平均绝对误差为2.18。