1. 程式人生 > 程式設計 >python運用sklearn實現KNN分類演算法

python運用sklearn實現KNN分類演算法

KNN(K-Nearest-Neighbours Classiflication)分類演算法,供大家參考,具體內容如下

最簡單的分類演算法,易於理解和實現

實現步驟:通過選取與該點距離最近的k個樣本,在這k個樣本中哪一個類別的數量多,就把k歸為哪一類。

注意

  • 該演算法需要儲存訓練集的觀察值,以此判定待分類資料屬於哪一類
  • k需要進行自定義,一般選取k<30
  • 距離一般用歐氏距離,即​

通過sklearn對資料使用KNN演算法進行分類

程式碼如下:

## 匯入鳶尾花資料集
iris = datasets.load_iris()
data = iris.data[:,:2]
target = iris.target

## 區分訓練集和測試集,75%的訓練集和25%的測試集
train_data,test_data = train_test_split(np.c_[data,target])
## 訓練並預測,其中選取k=15
clf = neighbors.KNeighborsClassifier(15,'distance')
clf.fit(train_data[:,:2],train_data[:,2])
Z = clf.predict(test_data[:,:2])
print '準確率:',clf.score(test_data[:,test_data[:,2])

colormap = dict(zip(np.unique(target),sns.color_palette()[:3]))
plt.scatter(train_data[:,0],1],edgecolors=[colormap[x] for x in train_data[:,2]],c='',s=80,label='all_data')
plt.scatter(test_data[:,marker='^',color=[colormap[x] for x in Z],s=20,label='test_data')
plt.legend()
plt.show()

結果如下:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。