【问题标题】:Probability prediction method of KNeighborsClassifier returns only 0 and 1KNeighborsClassifier 的概率预测方法只返回 0 和 1
【发布时间】:2016-09-02 12:26:51
【问题描述】:

谁能告诉我我的代码有什么问题? 为什么我可以使用 LinearRegression 预测 iris 数据集的概率,但是 KNeighborsClassifier 给我 0 或 1 而它应该给我一个类似于 LinearRegression 产生的结果?

from sklearn.datasets import load_iris
from sklearn import metrics

iris = load_iris()
X = iris.data
y = iris.target

for train_index, test_index in skf:
    X_train, X_test = X_total[train_index], X_total[test_index]
    y_train, y_test = y_total[train_index], y_total[test_index]

from sklearn.linear_model import LogisticRegression
ln = LogisticRegression()
ln.fit(X_train,y_train)

ln.predict_proba(X_test)[:,1]

数组([ 0.18075722, 0.08906078, 0.14693156, 0.10467766, 0.14823032, 0.70361962、0.65733216、0.77864636、0.67203114、0.68655163、 0.25219798, 0.3863194, 0.30735105, 0.13963637, 0.28017798])

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=5, algorithm='ball_tree', metric='euclidean')
knn.fit(X_train, y_train)

knn.predict_proba(X_test)[0:10,1]

数组([ 0., 0., 0., 0., 0., 1., 1., 1., 1., 1.])

【问题讨论】:

  • 回归 != 分类。并非所有分类器都支持概率的概念!

标签: machine-learning scikit-learn probability nearest-neighbor


【解决方案1】:

因为 KNN 的概率概念非常有限。它的估计只是最近邻居中选票的一小部分。将邻居的数量增加到 15 或 100 或靠近决策边界的查询点,您将看到更多样化的结果。目前,您的点总是具有相同标签的 5 个邻居(因此概率为 0 或 1)。

【讨论】:

  • 但是我的准确性降低了,因为我将远离最佳 K。如何在 weka 中,使用相同的 K,我们可以获得更弯曲的 ROC,而这里(scikit)ROC 非常锋利?
  • KNN 是一种启发式算法,有很多参数。您的结果很可能会有所不同。您也必须查找使用的指标和算法的默认值。甚至可能 ROC 曲线评估的方式也不同!还涉及随机性(在 KNN 中)!
  • 如果使用“weighted = distances”选项,概率输出会更精确
【解决方案2】:

这里,我有一个 knn 模型 - model_knn

使用 sklearn

result = {}    
model_classes = model_knn.classes_
predicted = model_knn.predict(word_average)
score = model_knn.predict_proba(word_average)
index = np.where(model_classes == predicted[0])[0][0]
result["predicted"] = predicted[0]
result["score"] = score[0][index]

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 2014-05-02
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2020-09-10
    • 2016-05-23
    相关资源
    最近更新 更多