微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在不平衡的数据集上使用KNN时,如何设置scoring ='recall'将我所有的概率变成二进制?

如何解决在不平衡的数据集上使用KNN时,如何设置scoring ='recall'将我所有的概率变成二进制?

我正在处理一个非常稀疏且不平衡的数据集,我在降低pca的维数,然后将其输入到knn分类器中。在这种情况下,我无法使用SMOTE或imblearn软件包,并且简单的向上采样没有太大帮助,因此我现在不希望纠正这种不平衡。我还对模型.predict_proba()输出感兴趣,而不是实际的预测。

当我使用scoring='roc_auc'拟合模型时,正如我期望的那样,knn.predict_proba(test_X)输出是介于0和1之间的连续浮点值。但是,当我为了更好地预测少数群体而设置scoring='recall'时,knn.predict_proba(test_X)输出要么是0.00001要么是1.00000,但我不明白为什么。如果我对为相同问题构建的梯度增强决策树分类器执行相同操作,则当我使用scoring='roc_auc'时,它仍会输出连续值。

我的最佳猜测是,该数据集中仅有少数案例,这与knn是一种拓扑方法有关。

我想了解导致这种情况发生的原因。

pca = PCA()
knn = KNeighborsClassifier()
pipe = Pipeline(steps=[('pca',pca),('knn',knn)])
#Define Parameters
param_grid = {
     'pca__n_components': [4,7,10,20,82],'knn__n_neigbors': [1,3,5,15],'knn__weights': ['uniform','distance'] 
     }
search = gridsearchcv(pipe,param_grid,n_jobs=-1,cv=10,verbose=3,scoring='recall')
======================================================================================
best_params_: {'pca__n_components': 82,'knn__n_neighbors': 15,'knn__weights': 'uniform'}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。