我使用的是sklearn的KNN,并使用了Forecast_proba预测了标签。我期望值在0到1的范围内,因为它告诉了特定类(class)的机率。但是我只得到0和1。

我也输入了较大的k值,但没有 yield 。虽然我只有1000个样本,但特征大约为200,矩阵却很稀疏。

谁能告诉我这里的解决方案是什么?

最佳答案

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

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

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

关于scikit-learn - 在KNN中获得概率为0或1(predict_proba),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41956049/

10-12 21:37