Я хочу построить ансамбль sklearn VotingClassifier
из нескольких разных моделей (Дерево решений, SV C и Сеть Keras). Все они нуждаются в различной обработке данных, поэтому я создал конвейер для каждого из них.
# Define pipelines
# DTC pipeline
featuriser = Featuriser()
dtc = DecisionTreeClassifier()
dtc_pipe = Pipeline([('featuriser',featuriser),('dtc',dtc)])
# SVC pipeline
scaler = TimeSeriesScalerMeanVariance(kind='constant')
flattener = Flattener()
svc = SVC(C = 100, gamma = 0.001, kernel='rbf')
svc_pipe = Pipeline([('scaler', scaler),('flattener', flattener), ('svc', svc)])
# Keras pipeline
cnn = KerasClassifier(build_fn=get_model())
cnn_pipe = Pipeline([('scaler',scaler),('cnn',cnn)])
# Make an ensemble
ensemble = VotingClassifier(estimators=[('dtc', dtc_pipe),
('svc', svc_pipe),
('cnn', cnn_pipe)],
voting='hard')
Классы Featuriser
, TimeSeriesScalerMeanVariance
и Flattener
представляют собой некоторые изготовленные на заказ трансформаторы, которые все используют методы fit
, transform
и fit_transform
.
Когда Я пытаюсь ensemble.fit(X, y)
соответствовать всему ансамблю. Я получаю сообщение об ошибке:
ValueError: Список оценки должен быть классификатором.
Что я могу понять, как Отдельные оценки - это не классификаторы, а конвейеры. Есть ли способ заставить его работать?