SKLearn 中具有类别权重的 KNN

Chr*_*rry 6 knn scikit-learn

是否可以在 SKLearn 中定义 K 最近邻分类器的类权重?我查看了API,但无法解决。我有一个 knn 问题,它的类数量非常不平衡(其中一些为 10000 个,其他为 1 个)。

Hap*_*lop 3

sklearn 中的原始 knn 似乎没有提供该选项。不过,您可以通过向距离方程添加系数(权重)来更改源代码,以便放大属于多数类的记录的距离(例如,系数为 1.5)。

https://github.com/scikit-learn/scikit-learn/blob/7b136e9/sklearn/neighbors/classification.py#L23

或者,不平衡学习模块(scikit-learn-contrib 项目的一部分)可用于类间不平衡程度较高的数据集:

http://contrib.scikit-learn.org/imbalanced-learn/stable/introduction.html

(如果是二元分类,您也可以将问题视为无监督异常值检测问题,并使用 sklearn 中的一类 SVM 等方法来执行分类)