【问题标题】:How to use KNeighborsClassifier in BaggingClassifier & How to solve "KNN doesn't support sample weights issue"如何在 BaggingClassifier 中使用 KNeighborsClassifier 以及如何解决“KNN 不支持样本权重问题”
【发布时间】:2020-03-01 01:25:20
【问题描述】:

我是 Sklearn 的新手,我正在尝试将 KNN、决策树、SVM 和 Gaussian 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】:

    BaggingClassifier 中,您只能使用支持样本权重的基本估计器,因为它依赖于score 方法,该方法接受sample_weightparam。

    您可以列出所有可用的分类器,例如:

    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) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 2021-10-04
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 2017-08-09
      相关资源
      最近更新 更多