归一化平均绝对误差nmae
时间: 2024-04-09 18:26:13 浏览: 1160
归一化平均绝对误差(NMAE)是一种用于衡量预测值与真实值之间差异的指标,它可以用来评估回归模型的性能。NMAE是将平均绝对误差(MAE)除以真实值的范围,以消除不同数据集之间的量纲差异。
NMAE的计算公式如下:
NMAE = MAE / (max_value - min_value)
其中,MAE表示平均绝对误差,计算方式为:
MAE = (1 / n) * Σ|预测值 - 真实值|
max_value和min_value分别表示真实值的最大值和最小值。
NMAE的值越小,表示模型的预测结果与真实值之间的差异越小,模型性能越好。
相关问题
归一化均方误差NMSE和归一化平均绝对误差nmae怎么计算
归一化均方误差(Normalized Mean Square Error, NMSE)和归一化平均绝对误差(Normalized Mean Absolute Error, nMAE)都是用于衡量预测值和真实值之间差异的指标,它们通常在0到1之间,数值越接近1表示误差越大,而接近0则表示预测准确。
1. 归一化均方误差 (NMSE):
NMSE 是通过将原始均方误差(MSE)除以信号的最大值(也可能是数据范围)得到的,公式如下:
\[ \text{NMSE} = \frac{\text{MSE}}{\text{MAX}_{\text{signal}}} = \frac{\frac{1}{N}\sum_{i=1}^{N}(y_i - \hat{y}_i)^2}{\text{MAX}(y)} \]
其中 \( y_i \) 是真实值,\( \hat{y}_i \) 是预测值,\( N \) 是样本数,MAX(signal)是信号的最大值。
2. 归一化平均绝对误差 (nMAE):
nMAE 则是将原始平均绝对误差(MAE)除以真实值的最大值或数据范围,公式为:
\[ \text{nMAE} = \frac{\text{MAE}}{\text{MAX}_{\text{signal}}} = \frac{\frac{1}{N}\sum_{i=1}^{N}|y_i - \hat{y}_i|}{\text{MAX}(y)} \]
计算这两个指标时,都需要确保最大值(MAX(signal))不是零,因为这会导致分母为零导致结果错误。如果遇到所有预测值都等于真实值的情况,那么实际应用中可能会考虑使用其他类似度量标准。
sklearn实现归一化平均误差
在sklearn中,归一化平均误差(Normalized Mean Absolute Error,NMAE)可以通过自定义评估指标来实现。下面是一个示例代码,展示了如何使用sklearn来计算NMAE:
```python
from sklearn.metrics import make_scorer
from sklearn.metrics import mean_absolute_error
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LinearRegression
# 定义归一化平均误差的计算函数
def nmae(y_true, y_pred):
scaler = MinMaxScaler()
y_true_scaled = scaler.fit_transform(y_true.reshape(-1, 1))
y_pred_scaled = scaler.transform(y_pred.reshape(-1, 1))
return mean_absolute_error(y_true_scaled, y_pred_scaled)
# 创建一个自定义的评估指标
nmae_scorer = make_scorer(nmae, greater_is_better=False)
# 加载数据
X, y = load_data()
# 创建模型
model = LinearRegression()
# 使用交叉验证计算NMAE
nmae_scores = cross_val_score(model, X, y, cv=5, scoring=nmae_scorer)
# 打印NMAE的平均值
print("NMAE:", np.mean(nmae_scores))
```
在上面的代码中,我们首先定义了一个`nmae`函数,该函数将原始的目标变量和预测值进行归一化处理,并计算归一化平均绝对误差。然后,我们使用`make_scorer`函数创建了一个自定义的评估指标`nmae_scorer`,该评估指标将在交叉验证中使用。接下来,我们加载数据,创建模型,并使用`cross_val_score`函数进行交叉验证计算NMAE。最后,我们打印出NMAE的平均值。
阅读全文