如何在BaggingClassifier中使用KNeighborsClassifier以及如何解决“ KNN不支持样本权重问题”

问题描述 投票:0回答:1

我是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,则“装袋”部分效果很好。有谁有解决这个问题的想法?谢谢您的时间。

python scikit-learn knn voting ensemble-learning
1个回答
0
投票

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) 
© www.soinside.com 2019 - 2024. All rights reserved.