Я смотрел на реализацию ядра (для классификации текста), и следующий фрагмент кода немного смутил меня (я удалил часть функций - чтобы сохранить их легкость - так как большинство из них похожи - например, количество отрицательных, положительных, нейтральных слов):
pipeline_ = Pipeline([
('fu', FeatureUnion([
('tfdif_features', Pipeline([
('cv', CountVectorizer()),
('tfidf', TfidfTransformer()),
('tfidf_', Wrapper(RandomForestClassifier())),
])),
('nb_pos_features', Pipeline([
('nb_pos', NumberSelector('posWords') ),
('nb_pos_', Wrapper(RandomForestClassifier())),
])),
])),
('xgb', XGBClassifier()),
])
Сначала я подумал, что это выглядит как пакетирование, поскольку для каждой функции создается базовая модель с последующим повышением. Но не случайный лес в этом случае дерево решений? Почему используется случайный лес, а не что-то другое (например, логистическая регрессия)?
Любые разъяснения будут с благодарностью.