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

Python 使用一个模型的预测概率训练另一个模型,并保存为单个模型,python,scikit-learn,xgboost,Python,Scikit Learn,Xgboost,我有一个XGBoost模型,用于某种二进制分类目的。它利用了一些特性,即f1、f2、f3、f4、f5、f6、f7 我想利用sklearn中的另一个LogisticRegression模型,该模型利用模型的输出和XGBoost模型的一个功能进行预测,即必须使用f1,out进行预测。其中,out是由XGBoost模型做出的预测 我想将这两个模型保存到一个文件中,了解如何在生产中进行预测 我该怎么做呢?要实现这一点,您需要和的组合 大概是这样的: final_classifier = Pipeline

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

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

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


我该怎么做呢?

要实现这一点,您需要和的组合

大概是这样的:

final_classifier = Pipeline([
    ('features', FeatureUnion([
        ('f1', FeatureSelector()),
        ('out', XGBoostClassifierTransformer()),
     ])
    ),
    ('clf', LogisticRegression()),
])
在这里,
FeatureSelector()
XGBoostClassifierTransformer()
是自定义包装,您可以自己轻松制作。您需要实现
fit()
transform()
方法,并将输出发送到管道的下一部分

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

这看起来像这样

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
X-->最终分类器,管道
|

|您需要和的组合才能实现这一点

大概是这样的:

final_classifier = Pipeline([
    ('features', FeatureUnion([
        ('f1', FeatureSelector()),
        ('out', XGBoostClassifierTransformer()),
     ])
    ),
    ('clf', LogisticRegression()),
])
在这里,
FeatureSelector()
XGBoostClassifierTransformer()
是自定义包装,您可以自己轻松制作。您需要实现
fit()
transform()
方法,并将输出发送到管道的下一部分

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

这看起来像这样

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
X-->最终分类器,管道
|

|使用管道和功能联盟。@VivekKumar你能给我指一些我可以参考的例子吗。?使用管道和功能联盟。@VivekKumar你能给我指一些我可以参考的例子吗。?