Я пытаюсь сравнить производительность набора проверки классификатора ансамбля с отдельными предикторами, которые составляют ансамбль.
Я следовал коду для Упражнение 8 из этого ноутбука , чтобы собрать жесткий VotingClassifier
с LinearSVC
, RandomForestClassifier
, ExtraTreesClassifier
и MLPClassifier
для версии 1 набора данных MNIST Digits с использованием sklearn
s fetch_openml
API.
Я обучил ансамбль и оценил его, вызвав его функцию score
с данными проверки, и получил оценку 0,97. Так что я уверен, что ансамбль и, соответственно, отдельные предикторы были обучены / подходят.
Но когда я пытаюсь использовать списочное понимание, чтобы вызвать score
для индивидуума, вписанного estimators_
в этот ансамбль, например, так:
[estimator.score(X_val, y_val) for estimator in voting_clf.estimators_]
Я всегда получаю результат 0,0 для каждого предиктора , даже если я оцениваю на тренировочных данных.
Я подтвердил, что подоценки в estimators_
были выполнены с использованием метода predict
, как описано в в этом сообщении StackOverflow .
Я также тренировал одни и те же оценщики индивидуально и оценивал их тем же методом. Похоже, это работает, так как результаты похожи на результаты в учебном пособии.
Я ссылаюсь на неправильный список подоценок в объекте ансамбля?