忽略NaN来计算mean_absolute_error

问题描述 投票:0回答:1

我正在尝试计算 MAE(平均绝对误差)。 在我的原始 DataFrame 中,我有 1826 行和 3 列。我使用第 2 列和第 3 列来计算 MAE。 但是,在第 2 列中,我有一些 NaN 值。 我使用时:

from sklearn.metrics import mean_absolute_error

并选择了这些列,它给了我一个错误:“输入包含 NaN”。

举个例子,我正在尝试做这样的事情:

from sklearn.metrics import mean_absolute_error
y_true = [3, -0.5, 2, 7, 10]
y_pred = [2.5, np.NaN, 2, 8, np.NaN]
mean_absolute_error(y_true, y_pred)

是否可以跳过或忽略 NaN 的行?

更新

我正在与我的顾问老师进行分析,我们决定最好是放弃所有这些 NaN 值。

python pandas scikit-learn
1个回答
0
投票

如果您想忽略 NaN,请构建一个掩码并执行布尔索引:

from sklearn.metrics import mean_absolute_error
import numpy as np

y_true = np.array([3, -0.5, 2, 7, 10])
y_pred = np.array([2.5, np.NaN, 2, 8, np.NaN])
m = ~np.isnan(y_pred)

mean_absolute_error(y_true[m], y_pred[m])

输出:

0.5

© www.soinside.com 2019 - 2024. All rights reserved.