我正在尝试计算 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 值。
如果您想忽略 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