是否可以在预训练的模型上使用StackRegressor?

时间:2020-02-11 10:30:19

标签: python keras scikit-learn

我想使用scikit-learn的StackedRegressor构建一个整体,但是我想使用预训练的keras模型。基本上,我想利用元回归器以可能的最佳方式使用每个基本模型,但是我不需要对其进行培训。

regressor_1 = KerasRegressor(build_fn)
regressor_2 = KerasRegressor(build_fn)
regressor_3 = KerasRegressor(build_fn)
regressors = [('r1', regressor_1),
              ('r2', regressor_2),
              ('r3', regressor_3)]

xgboost = XGBRegressor(learning_rate=0.01, n_estimators=3460,
                       max_depth=3, min_child_weight=0,
                       gamma=0, subsample=0.7,
                       colsample_bytree=0.7,
                       objective='reg:linear', nthread=-1,
                       scale_pos_weight=1, seed=27,
                       reg_alpha=0.00006)
stack_gen = StackingRegressor(estimators=regressors,
                                final_estimator=xgboost,
                                n_jobs=-1)

但同样没有拟合基础模型。

2 个答案:

答案 0 :(得分:0)

我认为您不需要stackingRegressor

做这样的事情:

prediction =[]
for reg in regressors:
     predictions.append(reg.predict(X))

xgboost.fit_predict(prediction)

答案 1 :(得分:0)

通过描述和定义,sklearn的StackingRegressor模块使用多个回归变量的预测将其注入另一个回归模型中

”每个单独的估算器的预测被堆叠在一起, 用作最终估算器的输入以计算预测。 “

因此,为了接收(简单描述)if-then或y = ax + bz逻辑,并将ifs和x-z放入等式中,不可避免地需要对某些数据进行拟合(生成算法)。

我在想,在您的情况下,您可能只需要一种集成技术,即采用“最佳”(最小错误)或仅取预测的平均值即可。 有关此主题的更多信息和sklearn模块: https://scikit-learn.org/stable/modules/ensemble.html