1. 程式人生 > >K最近鄰(KNN)

K最近鄰(KNN)

K最近鄰演算法

#K最近鄰演算法分辨手寫數字圖片
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
digits = load_digits()
pca = PCA(n_components=25)
pca.fit(digits.data[:1700,:])
X, y = pca.transform(digits.data[:1700,:]), digits.target[:1700]
tX, ty = pca.transform(digits.data[1700:,:]), digits.target[1700:]
from sklearn.neighbors import KNeighborsClassifier
kNN = KNeighborsClassifier(n_neighbors=5, p=2)
kNN.fit(X,y)
print ('Accuracy: %.3f' % kNN.score(tX,ty) )
print( 'Prediction: %s actual: %s' % (kNN.predict(tX[:10,:]),ty[:10]))

結果:

選擇K引數

for k in [1,5,10,20,50,100,200]:
    kNN = KNeighborsClassifier(n_neighbors=k).fit(X,y)
    print ('for k=%3i accuracy is %.3f' % (k, kNN.score(tX,ty)))