scikit-learn - 在 KNN 中获得概率为 0 或 1 (predict_proba)

标签 scikit-learn knn

我使用 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/

相关文章:

python - 如何在内存中加载 scikit-learn 机器学习模块?

python - LeaveOneOut 确定 knn 中的 k

python - sklearn KNeighborsClassifier 评分方法如何工作?

algorithm - k 最近邻分类器训练每个类的样本大小

computational-geometry - 在高暗空间中具有动态插入的 kNN

python - 使用 Scikit-Learn 在 RegressorChain 上进行 GridSearch?

python - tfidf 上的 scikit-learn NearestNeighbors .kneighbors() 给出 ValueError : UPDATEIFCOPY base is read-only

classification - k最近邻算法中k的值

python - 使用中位数(而不是均值)使用 sklearn-KN​​N 进行预测

python - 想知道 pd.factorize、pd.get_dummies、sklearn.preprocessing.LableEncoder 和 OneHotEncoder 之间的区别