我是Sklearn的新手,我正在尝试将KNN,决策树,SVM和高斯NB结合用于BaggingClassifier。
我的部分代码如下:
best_KNN = KNeighborsClassifier(n_neighbors=5, p=1)
best_KNN.fit(X_train, y_train)
majority_voting = VotingClassifier(estimators=[('KNN', best_KNN), ('DT', best_DT), ('SVM', best_SVM), ('gaussian', gaussian_NB)], voting='hard')
majority_voting.fit(X_train, y_train)
bagging = BaggingClassifier(base_estimator=majority_voting)
bagging.fit(X_train, y_train)
但是这会导致错误:
TypeError:底层估计量KNeighborsClassifier不支持样本权重。
如果我删除KNN,则“装袋”部分效果很好。有谁有解决这个问题的想法?谢谢您的时间。
在BaggingClassifier
中,您只能使用支持样本权重的基本估计量,因为它依赖于score方法,该方法采用sample_weight
参数。
您可以列出所有可用的分类器,例如:
import inspect
from sklearn.utils.testing import all_estimators
for name, clf in all_estimators(type_filter='classifier'):
if 'sample_weight' in inspect.getargspec(clf.fit)[0]:
print(name)