Используйте прогнозируемую вероятность одной модели для обучения другой модели и сохраните как одну модель - PullRequest
0 голосов
/ 16 октября 2018

У меня есть модель XGBoost, которую я использую для какой-то двоичной классификации.Он использует некоторые функции, а именно f1, f2, f3, f4, f5, f6, f7

Я хочу использовать другую модель LogisticRegression из sklearn, которая использует выходные данные модели и функцию модели XGBoost, чтобы сделатьпрогноз, т. е. для того, чтобы сделать прогноз, требуется f1, out.Где out - это прогноз, сделанный моделью XGBoost.

Я хочу сохранить эти две модели в одном файле, как сделать прогноз в производстве.

Как я могу это сделать .?

1 Ответ

0 голосов
/ 17 октября 2018

Для этого вам понадобится комбинация 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
...