Форум сайта python.su
Catboost, случайный лес и логическая модель обучались на одних и тех же данных. Хочу усреднить результаты их предсказаний. Как можно это реализовать?
Офлайн
Можно предположить, что используется scikit-learn.
В вашем случае можно использовать VotingClassifier с параметром voting='soft'.
При voting='soft' вероятности предсказаний каждого классификатора будут сложены, а результатом
классификации будет тот класс, который даст максимальную сумму. Это тоже самое, что и осреднение –
только без деления на число классификаторов.
Отсюда следует,
чтобы VotingClassfier работал с параметром voting=soft, нужно, чтобы передаваемые ему классификаторы (estimators),
имели метод predict_proba. Поскольку Catboost имеет api совместимый с scikit-learn (исходя из документации от яндекса) – у него есть такой метод, остальные – логистическая регрессия и случайный лес – тоже (если они взяты из sklearn) имеют метод predict_proba.
В общем, какой-то такой псевдокод должен привести к желаемому результату:
avg_clf = VotingClassifier([('CB_classifier', CatBoostClassifier(...)), ('RF_classifier', RandomForestClassfier(...)), ('Logit', LogisticRegression(....))], voting='soft' ) avg_clf.fit('your train dataset') avg_clf.predict_proba('new data') # or .predict('new data')
Отредактировано scidam (Март 27, 2018 04:23:20)
Офлайн