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

Use predicted probability of one model to train another model and save as one single model

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

我想使用来自 sklearn 的另一个 LogisticRegression 模型,该模型利用模型的输出和 XGBoost 模型的特征来进行预测,即它必须采用f1, out 进行预测。其中 out 是由 XGBoost 模型做出的预测。

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

我该怎么做?

您需要 FeatureUnion and Pipeline 的组合才能实现此目的。

像这样:

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