我有一个数据集,每个特征的所有值都是数字,甚至是类/标签列。在用 python 实现的提升算法(如 logitboost、adaboost、gradientboosting)中,除了预设的基本估计器(或弱学习器,迭代我们的数据的模型)之外,我们可以指定一个分类算法,如 SVM 中的 SVC,如朴素贝叶斯等上。(一些算法/包,如在 python 中实现的 xgboost 和 catboost,除了包中实现的那些之外,不能接受任何其他基本估计器......也许是实现偏好?)
通过这个介绍,我提出了我的问题。此处的代码不起作用并给出此错误: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(支持向量回归),这不是我想要的。谁能解释为什么会发生这种情况以及我该如何解决?为了比较公平起见,我需要为每个算法使用相同的基本估计器......
谢谢。