Для VotingClassifier
оценщиками должен быть список кортежей с именами и моделью.
Обратите внимание, что вы создали класс модели, а затем дали внутри кортежа.
С Документация:
Оценки : список (строка, оценщик) кортежей Вызов фитинга
метод на VotingClassifier будет соответствовать клонам тех оригинальных
Оценщики, которые будут храниться в атрибуте класса
self.estimators_. Оценщик может быть установлен на Нет с помощью set_params.
Для двух других ансамблей вы можете задать задачу только одному базовому оценщику и n количественным оценщикам для одной и той же базовой модели. Перебирайте различные классификаторы, как вы делали код, но каждый раз вы переопределяете модель ансамбля.
base_estimator : объект или нет, необязательно (по умолчанию = нет) База
оценка для размещения на случайных подмножествах набора данных. Если нет, то
Базовая оценка - это дерево решений.
n_estimators : int, необязательный (по умолчанию = 10) Номер базы
Оценщики в ансамбле.
Попробуйте это!
iris = datasets.load_iris()
X, y = iris.data[:, 1:3], iris.target
classifier_names = ["logistic regression","linear SVM","nearest centroids", "decision tree"]
classifiers = [LogisticRegression(), LinearSVC(), NearestCentroid(), DecisionTreeClassifier()]
ensemble1 = VotingClassifier([(n,c) for n,c in zip(classifier_names,classifiers)])
ensemble2 = BaggingClassifier(base_estimator= DecisionTreeClassifier() , n_estimators= 10)
ensemble3 = AdaBoostClassifier(base_estimator= DecisionTreeClassifier() , n_estimators= 10)
ensembles = [ensemble1,ensemble2,ensemble3]
seed = 7
for ensemble in ensembles:
kfold = model_selection.KFold(n_splits=10, random_state=seed)
results = model_selection.cross_val_score(ensemble, X, y, cv=kfold)
print(results.mean())