使用一个模型的预测概率来训练另一个模型并另存为一个模型

时间:2018-10-16 14:14:54

标签: python scikit-learn xgboost

我有一个XGBoost模型,用于某些二进制分类目的。它利用了f1, f2, f3, f4, f5, f6, f7

我想使用LogisticRegression中的另一个sklearn模型,该模型利用模型的输出和XGBoost模型的功能来进行预测,即必须使用{{ 1}}进行预测。 f1, outout模型做出的预测。

我想将这两个模型保存到单个文件中,以了解如何在生产中进行预测。

我该怎么办??

1 个答案:

答案 0 :(得分:3)

您需要结合使用FeatureUnionPipeline来实现这一目标。

类似这样的东西:

final_classifier = Pipeline([
    ('features', FeatureUnion([
        ('f1', FeatureSelector()),
        ('out', XGBoostClassifierTransformer()),
     ])
    ),
    ('clf', LogisticRegression()),
])

在这里,FeatureSelector()XGBoostClassifierTransformer()是自定义包装,您可以轻松地自己制作。您需要使用要发送到管道下一部分的输出来实现fit()transform()方法。

FeatureUnion将在其每个内部部件上调用transform(),然后合并输出。管道将获取此输出,然后发送到下一部分,即LogisticRegression。

这看起来像这样。

X --> final_classifier, Pipeline
            |
            |  <== X is passed to FeatureUnion
            \/
      features, FeatureUnion
                      |
                      |  <== X is duplicated and passed to both parts
        ______________|__________________
       |                                 |
       |                                 |                         
       \/                               \/
   f1, FeatureSelector                out, XGBoostClassifierTransformer
           |                                          |   
           |<= Only f1 is selected from X             | <= All features are used in XGBoost
           |                                          |
           \/________________________________________\/
                                      |
                                      |
                                     \/
                                   clf, LogisticRegression