Я использую sklearn 0.19.1 с DecisionTree и AdaBoost.
У меня есть классификатор DecisionTree, который отлично работает:
clf = tree.DecisionTreeClassifier()
train_split_perc = 10000
test_split_perc = pdf.shape[0] - train_split_perc
train_pdf_x = pdf[:train_split_perc]
train_pdf_y = YY[:train_split_perc]
test_pdf_x = pdf[-test_split_perc:]
test_pdf_y = YY[-test_split_perc:]
clf.fit(train_pdf_x, train_pdf_y)
pred2 = clf.predict(test_pdf_x)
Но при попытке добавить AdaBoost выдает ошибку в функции прогнозирования:
treeclf = tree.DecisionTreeClassifier(max_depth=3)
adaclf = AdaBoostClassifier(base_estimator=treeclf, n_estimators=500, learning_rate=0.5)
train_split_perc = 10000
test_split_perc = pdf.shape[0] - train_split_perc
train_pdf_x = pdf[:train_split_perc]
train_pdf_y = YY[:train_split_perc]
test_pdf_x = pdf[-test_split_perc:]
test_pdf_y = YY[-test_split_perc:]
adaclf.fit(train_pdf_x, train_pdf_y)
pred2 = adaclf.predict(test_pdf_x)
В частности, ошибка говорит:
ValueError: bad input shape (236821, 6)
Набор данных, на который он, похоже, указывает, train_pdf_y
, потому что он имеет форму (236821, 6)
, и я не понимаю, почему.
Даже из описания AdaBoostClassifier в документах Я могу понять, что фактическим классификатором, который использует данные, является DecisionTree:
Классификатор AdaBoost 1 является метаоценкой, которая начинается с подгонки
классификатор в исходном наборе данных, а затем подходит дополнительные копии
классификатора в том же наборе данных, но где веса
неправильно классифицированные экземпляры корректируются таким образом, чтобы последующие
классификаторы больше ориентированы на сложные случаи
Но все же я получаю эту ошибку.
В примерах кода , которые я нашел , даже на веб-сайте sklearn с описанием использования AdaBoost, и я не могу понять, что я делаю неправильно.
Любая помощь приветствуется.