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

自定义Python RMSE计算函数持续返回NaN问题排查求助

问题根因

  • 核心原因是Pandas的索引自动对齐机制:你使用的测试值序列t = test['X']的索引为年份值(20002019),而模型输出的预测值序列`forecast`的索引为100119的整数,两者索引完全不匹配。Pandas在执行两个序列的四则运算时,会优先按索引匹配进行对应位置计算,没有匹配到索引的位置会自动填充NaN,最终(t-y)的所有计算结果都是NaN,求均值后自然返回空值。
  • 你可以在函数内计算误差前加入print((t-y).isna().all())验证,输出为True即可确认是该问题。

解决方案

你可以任选以下任意一种方法修复:

方法1:强制重置索引对齐

将两个序列的索引重置为默认的从0开始的连续整数,消除索引不匹配的影响:

def rmse(result):
    forecast = result.forecast(point)  
    t = test['X'].reset_index(drop=True)
    y = forecast.reset_index(drop=True)
    mse = np.mean((t - y)**2)
    return np.sqrt(mse)

方法2:直接取Numpy数组计算

跳过Pandas的索引对齐逻辑,直接获取序列底层的数组进行计算:

def rmse(result):
    forecast = result.forecast(point)  
    t = test['X'].values
    y = forecast.values
    mse = np.mean((t - y)**2)
    return np.sqrt(mse)

方法3:从数据切分侧统一索引

如果是时序预测场景,你可以在切分训练集、测试集时就保证后续预测输出的索引和测试集索引完全对应,避免后续运算出现索引错位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:24:01