如何获得sklearn k-nn中每个class的比率?

how to get a ratio of each class in sklearn k-nn?

在这种情况下,当 k 为 5 时,将预测为蓝色,因为 5 个蓝色点中有 3 个。 而且,我知道如何对准确性进行评分。但我想知道的是每个蓝点和红点的比例,如下图所示。

sklearn 或 tensorflow 中是否有任何工具可以执行此操作?还是我应该制作自己的 k-nn 模型?

Sklearn 做到了!检查this out. Predict_proba是你想要的功能。

每个 class 都有您的概率,只需将其乘以 K 即可得到您想要的实际数字:

X = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]
from sklearn.neighbors import KNeighborsClassifier

K = 3

neigh = KNeighborsClassifier(n_neighbors=K)
neigh.fit(X, y)

print(neigh.predict([[1.1]]))

predicted = neigh.predict_proba([[0.9]]) # -> [[0.66666667 0.33333333]]

whatYouWant = K*predicted

print(whatYouWant) #-> [[2,1]]
print("Number of 0 : ",whatYouWant[0][0]) # -> Number of 0 :  2.0
print("Number of 1 : ",whatYouWant[0][1]) # -> Number of 1 :  1.0
print("Total : ",sum(whatYouWant[0])) # -> Total :  3.0 which is K