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

如何嵌套使用Sklearn多回归模型,实现TPOT输出的堆叠回归结构

实现TPOT嵌套回归模型的操作方法

TPOT输出的嵌套结构本质是层级堆叠回归,执行顺序从最内层模型向外层逐层计算,上一层模型的输出作为下一层模型的输入。你给出的结构执行顺序为:最内层XGBRegressor(**args1) → 中间层XGBRegressor(**args2) → 最外层RandomForestRegressor(**args3)

方法1:手动逐层实现(适合理解逻辑)

先替换代码中args1/args2/args3为TPOT输出的实际参数值,再按如下逻辑编写代码:

from xgboost import XGBRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split

# 替换为TPOT输出的实际参数
args1 = {...}
args2 = {...}
args3 = {...}

# 初始化各层模型
xgb1 = XGBRegressor(**args1)
xgb2 = XGBRegressor(**args2)
rf = RandomForestRegressor(**args3)

# 替换为你自己的特征集X、标签y
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 第一层:训练最内层xgb1,输出训练/测试集的预测结果
xgb1.fit(X_train, y_train)
xgb1_train_pred = xgb1.predict(X_train)
xgb1_test_pred = xgb1.predict(X_test)

# 第二层:用xgb1的预测结果作为xgb2的输入,训练xgb2
xgb2.fit(xgb1_train_pred.reshape(-1, 1), y_train)
xgb2_train_pred = xgb2.predict(xgb1_train_pred.reshape(-1, 1))
xgb2_test_pred = xgb2.predict(xgb1_test_pred.reshape(-1, 1))

# 第三层:用xgb2的预测结果作为随机森林的输入,训练最终模型
rf.fit(xgb2_train_pred.reshape(-1, 1), y_train)

# 执行最终预测
y_pred = rf.predict(xgb2_test_pred.reshape(-1, 1))

方法2:用Sklearn官方API封装(符合规范,调用方便)

使用StackingRegressor嵌套封装,直接兼容Sklearn的fit/predict接口:

from xgboost import XGBRegressor
from sklearn.ensemble import RandomForestRegressor, StackingRegressor
from sklearn.model_selection import train_test_split

# 替换为TPOT输出的实际参数
args1 = {...}
args2 = {...}
args3 = {...}

# 内层堆叠:xgb1为基学习器,xgb2为元学习器
inner_stack = StackingRegressor(
    estimators=[('xgb1', XGBRegressor(**args1))],
    final_estimator=XGBRegressor(**args2),
    passthrough=False
)

# 外层堆叠:内层堆叠作为基学习器,随机森林为最终元学习器
full_model = StackingRegressor(
    estimators=[('inner_stack', inner_stack)],
    final_estimator=RandomForestRegressor(**args3),
    passthrough=False
)

# 直接正常训练预测即可
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
full_model.fit(X_train, y_train)
y_pred = full_model.predict(X_test)

注意事项

  • 若需要和TPOT的评估结果完全对齐,要和TPOT使用相同的数据集拆分规则、随机种子、评估指标,避免结果偏差。
  • 如果TPOT输出的结构要求将前层输出和原始特征拼接作为下一层输入,把passthrough参数改为True即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:06:04