KNN中的概率为0或1(predict_proba)

时间:2017-01-31 11:09:14

标签: scikit-learn knn

我正在使用sklearn的KNN并使用predict_proba预测标签。我期待值在0到1的范围内,因为它告诉了特定类的概率。但我只得到0& 1。

我也放了很大的k值,但没有增益。虽然我只有1000个样本,其特征在200左右,而且矩阵很稀疏。

有人可以告诉我这里有什么解决方案吗?

2 个答案:

答案 0 :(得分:0)

原因可能是训练和测试集中缺少各种数据。

如果样本的特征可能仅存在于特定类别中,而其特征在训练集中的其他类别的任何样本中不存在,则该样本将被预测以100%的概率属于该类别(1 ),其他类别则为0%(0)。 除此以外;假设您有2个类,并测试了knn.predict_proba(sample)之类的样本,并期望得到诸如[[0.47, 0.53]]之类的结果,则无论哪种方式,该结果总计为1。

如果是这样,请尝试生成自己的测试样本,该样本具有训练集中多个类对象的功能。

答案 1 :(得分:0)

sklearn.neighbors.KNeighborsClassifier(n_neighbors = k

之所以只得到0和1是因为n_neighbors = k参数。如果k值设置为1,则将得到0或1。如果将其设置为2,则将得到0、0.5或1。如果将其设置为3,则概率输出将为0、0.333、0.666,或1。

还要注意,概率值在KNN中基本上是没有意义的。该算法基于相似度和距离。