我使用 sklearn 的 KNN 并使用 predict_proba 预测标签。我期待 0 到 1 范围内的值,因为它告诉了特定类别的概率。但我只得到 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/