python運用sklearn實現KNN分類演算法
阿新 • • 發佈:2020-01-09
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()
結果如下:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。