У меня есть набор данных, в котором все значения для каждого объекта являются числовыми, даже столбец класса / метки. В алгоритмах повышения, реализованных в python (таких как logitboost, adaboost, GradientBoosting), кроме предустановленных базовых оценок (или слабых учеников, модель, которая перебирает наши данные), мы можем указать алгоритм классификации, такой как SVC из SVM, как наивные байесы и т. Д. на. (некоторые алгоритмы / пакеты, такие как xgboost и catboost, которые реализованы в python, не могут принимать другие базовые оценки, кроме тех, которые реализованы в пакете ... может быть предпочтение реализации?)
В этом вступлении я представляю свою проблему. Этот код здесь не работает и выдает эту ошибку: LogitBoost requires the base estimator to be a regressor.
for j in range(1, 21):
for i in range(1, 11):
X_train = pd.read_csv('{}-train{}-1.csv'.format(j, i))
y_train = pd.read_csv('{}-train{}-2.csv'.format(j, i))
X_test = pd.read_csv('{}-test{}-1.csv'.format(j, i))
y_test = pd.read_csv('{}-test{}-2.csv'.format(j, i))
model = logitboost.LogitBoost(base_estimator = svm.SVC())
model.fit(X_train, y_train)
y_predict = model.predict(X_test)
accuracy = metrics.accuracy_score(y_test, y_predict)
print('Accuracy for dataset {}, segment {} is: '.format(j, i), accuracy)
print('Confusion Matrix for Datatset {}, segment {} is: '.format(j, i))
print(metrics.confusion_matrix(y_test, y_predict))
Пожалуйста, не берите в голову отступ. Это показывает неправильно здесь, но это правильно на холостом ходу. Я прошу прощения за это.
Линия:
model = logitboost.LogitBoost(base_estimator = svm.SVC())
не работает с SVC, что должно, потому что logitboost является алгоритмом классификации. Но он работает с SVR (регрессия опорных векторов), а это не то, что я хочу. Кто-нибудь может объяснить, почему это происходит и как я могу решить это? Мне нужно использовать одни и те же базовые оценки для каждого алгоритма ради справедливости в сравнении ...
Спасибо.