我有一个XGBoost
模型,用于某些二进制分类目的。它利用了f1, f2, f3, f4, f5, f6, f7
我想使用LogisticRegression
中的另一个sklearn
模型,该模型利用模型的输出和XGBoost
模型的功能来进行预测,即必须使用{{ 1}}进行预测。 f1, out
是out
模型做出的预测。
我想将这两个模型保存到单个文件中,以了解如何在生产中进行预测。
我该怎么办??
答案 0 :(得分:3)
您需要结合使用FeatureUnion和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