【问题标题】:Is it possible to use a StackRegressor on pretrained models?是否可以在预训练模型上使用 StackRegressor?
【发布时间】:2020-02-11 10:30:19
【问题描述】:

我想使用 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)

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

【问题讨论】:

    标签: python keras scikit-learn


    【解决方案1】:

    我认为您不需要stackingRegressor

    做这样的事情:

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

    【讨论】:

      【解决方案2】:

      根据描述和定义,sklearn 的 StackingRegressor 模块使用多个回归器的预测将它们注入另一个回归模型

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-08-19
        • 2018-05-05
        • 2019-08-11
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多