如何获得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
在这种情况下,当 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