在SKLearn中具有类权重的KNN

时间:2016-06-17 08:05:58

标签: scikit-learn knn

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

1 个答案:

答案 0 :(得分:2)

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

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

或者,imbalanced-learn模块是scikit-learn-contrib项目的一部分,可用于具有高级别间不平衡的数据集:

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

(在二进制分类的情况下,您可以选择将问题视为无监督的离群值检测问题,并使用sklearn中的单类SVM等方法来执行分类)