2017-03-25 40 views
-1

例如 -如何從樣本數據中計算精度分數?

X = iris.data 
y = iris.target 

from sklearn.nighbors import KNeighborsClassifier 

knn = KNeighborsClassifier() 

knn.fit(X,y) 

pred = knn.predict([3,5,4,2]) 

print(pred) 

輸出:[2] ...這裏2代表一類值 我如何計算這個預測的準確性?

+0

請正確縮進的問題。代碼和文本應該是分開的 –

+0

您似乎對*置信度*而不是準確度感興趣? –

回答

1

如果您的意思是可能性而不是準確性,因爲您無法計算單點精度。

而不是

pred = knn.predict([3,5,4,2]) 

使用

pred = knn.predict_proba([3,5,4,2]) 

它應該給你屬於類數據點的概率。

如果您正在尋找整體模型的準確性,您可以做交叉驗證。

from sklearn.neighbors import KNeighborsClassifier 
from sklearn.metrics import cross_val_score 
from sklearn import datasets 

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

knn = KNeighborsClassifier() 
scores = cross_val_score(knn, X, y, cv=10) 
print(score.mean()) 

輸出

0.96666666666666679 
+0

它返回兩個值 - > [[0.37881165 0.62118835]] 這是什麼意思?它提供了兩種可能性嗎? – Ragib

+0

是的。因此,第一個數字是屬於「Class-1」的「[3,5,4,2]」爲0.38,而「Class-2」爲0.62的概率。由於屬於第2類的數據點的概率很高,所以數據點被預測爲第2類 –

+0

您可以使用概率pred [:,0]或pred [:,1]來確定數據的準確性屬於1類或2類的點。 –