我有一个用于二进制分类的XGBoost模型。它利用了一些特性,即f1, f2, f3, f4, f5, f6, f7。
我想利用来自LogisticRegression的另一个sklearn模型,它利用模型的输出和XGBoost模型的一个特性来进行预测,即必须用f1, out来进行预测。其中out是XGBoost模型所做的预测。
我想将这两个模型保存到一个文件中,一些如何在生产中进行预测。
我怎么能这么做呢?
发布于 2018-10-17 11:46:09
要实现这一点,您需要将FeatureUnion和管道结合起来。
就像这样:
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, LogisticRegressionhttps://stackoverflow.com/questions/52837559
复制相似问题