You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算MAE时遇NaN报错,如何忽略?已确定删除含NaN行

处理MAE计算中的NaN值问题

针对你遇到的mean_absolute_error因输入含NaN报错的问题,完全可以跳过包含NaN的行。结合你确定的删除含NaN行的方案,以下是具体实现:

1. 处理列表形式的真实值与预测值

针对你给出的列表示例,可通过numpy过滤掉含NaN的样本对后再计算MAE:

import numpy as np
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]

# 生成过滤掩码:保留y_true和y_pred都不为NaN的样本
mask = ~(np.isnan(y_true) | np.isnan(y_pred))
# 提取过滤后的数值
filtered_true = np.array(y_true)[mask]
filtered_pred = np.array(y_pred)[mask]

# 计算MAE
mae = mean_absolute_error(filtered_true, filtered_pred)
print(mae)

2. 处理DataFrame场景(你的原始数据)

假设你的DataFrame名为df,要使用第2、3列(索引从0开始)计算MAE,直接删除包含NaN的行即可:

import pandas as pd
from sklearn.metrics import mean_absolute_error

# 删除所有含NaN的行(若需仅检查第2、3列,可添加参数:subset=[df.columns[1], df.columns[2]])
clean_df = df.dropna()
# 提取处理后的真实值和预测值
y_true_clean = clean_df.iloc[:, 1]
y_pred_clean = clean_df.iloc[:, 2]

# 计算MAE
mae = mean_absolute_error(y_true_clean, y_pred_clean)
print(mae)

上述方法通过移除含NaN的样本对,确保输入mean_absolute_error的都是完整数值,从而解决报错问题。

内容的提问来源于stack exchange,提问作者Daniel M M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 10:22:41