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

使用Pandas逐行累积计算RMSE并新增列存储的实现方法

累积RMSE计算实现方案

核心思路

RMSE的计算公式是sqrt(平均( (真实值-预测值)^2 )),逐行累积计算只需要把平均的范围改成从第0行到当前行即可,这里提供两种实现方式。

实现1:向量化计算(性能最优)

直接利用numpy和pandas的内置算子完成计算,没有显式循环,数据量越大效率优势越明显:

import pandas as pd
import numpy as np

# 原有读取数据代码无需修改
df = pd.read_excel(r'S:\...\df.xlsx')

# 1. 计算每行的误差平方
df['squared_error'] = (df['y_true'] - df['y_pred']) ** 2
# 2. 对误差平方做累积求平均,再开根号得到累积RMSE,保留2位小数
df['RMSE'] = np.sqrt(df['squared_error'].expanding().mean()).round(2)
# 可选:删除中间生成的误差平方列
df.drop('squared_error', axis=1, inplace=True)

print(df)

实现2:直观切片计算(灵活性高)

如果后续需要自定义更复杂的累积计算逻辑,可以用逐行切片的方式,代码逻辑更易读、易修改:

import pandas as pd
from sklearn.metrics import mean_squared_error
import numpy as np

df = pd.read_excel(r'S:\...\df.xlsx')

rmse_list = []
for i in range(len(df)):
    # 取从第0行到当前行的所有数据切片
    current_slice = df.iloc[:i+1]
    # 计算当前切片的RMSE
    current_rmse = mean_squared_error(current_slice['y_true'], current_slice['y_pred'], squared=False)
    rmse_list.append(round(current_rmse, 2))
df['RMSE'] = rmse_list

print(df)

两种实现输出结果均与你给出的预期结果完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:15:06