You need to enable JavaScript to run this app. 如何将多回归器的R2、RMSE结果合并为单一表头的DataFrame表格
优惠活动
大模型
产品
解决方案
定价
更多

如何将多回归器的R2、RMSE结果合并为单一表头的DataFrame表格

回归结果统一汇总表生成方案

你当前多次调用测试函数返回的都是独立的小DataFrame,存入列表后不会自动合并,只需用pandas的拼接功能即可得到单表头的统一表格。

解决方案1:直接拼接现有结果列表

你已经把每个回归器的结果存入了df_results列表,直接调用concat方法垂直拼接即可:

import pandas as pd
# 拼接所有小DataFrame,自动合并列名,保留所有行
df_total = pd.concat(df_results, axis=0)
# 如果需要把回归器名称从索引转为普通列,可以补充reset_index操作
df_total = df_total.reset_index(names="回归器名称")

运行后得到的df_total就是仅保留一组R2、RMSE列名的汇总表。

解决方案2:优化原有流程,更高效生成汇总表

你也可以调整测试逻辑,避免每次生成单独的小DataFrame,直接收集所有指标后一次性生成总表,代码示例如下:

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

# 初始化存储所有指标的列表
r2_scores = []
rmse_scores = []
regressor_names = []

# 定义要测试的回归器列表
regressors = [
    (LinearRegression(), "LinearRegression"),
    (RandomForestRegressor(), "RandomForestRegressor"),
    (SVR(), "SVR")
]

# 遍历测试每个回归器
for reg, name in regressors:
    reg.fit(X_train_full_ss, y_train_full)
    y_pred = reg.predict(X_test_ss)
    # 计算指标存入列表
    r2_scores.append(r2_score(y_test, y_pred))
    rmse_scores.append(np.sqrt(mean_squared_error(y_test, y_pred)))
    regressor_names.append(name)

# 一次性生成总表
df_total = pd.DataFrame({
    "回归器名称": regressor_names,
    "R2": r2_scores,
    "RMSE": rmse_scores
})

注意事项

  • 你原有代码中的apply_regressor_test函数存在语法错误,计算RMSE的行末尾缺少右括号,需要修改为r = np.sqrt(mean_squared_error(y_test, y_pred))才能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 19:36:03