python k-近鄰算法實(shí)例分享
簡(jiǎn)單說(shuō)明
這個(gè)算法主要工作是測(cè)量不同特征值之間的距離,有個(gè)這個(gè)距離,就可以進(jìn)行分類了。
簡(jiǎn)稱kNN。
已知:訓(xùn)練集,以及每個(gè)訓(xùn)練集的標(biāo)簽。
接下來(lái):和訓(xùn)練集中的數(shù)據(jù)對(duì)比,計(jì)算最相似的k個(gè)距離。選擇相似數(shù)據(jù)中最多的那個(gè)分類。作為新數(shù)據(jù)的分類。
python實(shí)例
# -*- coding: cp936 -*-
#win系統(tǒng)中應(yīng)用cp936編碼,linux中最好還是utf-8比較好。
from numpy import *#引入科學(xué)計(jì)算包
import operator #經(jīng)典python函數(shù)庫(kù)。運(yùn)算符模塊。
#創(chuàng)建數(shù)據(jù)集
def createDataSet():
group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels=['A','A','B','B']
return group,labels
#算法核心
#inX:用于分類的輸入向量。即將對(duì)其進(jìn)行分類。
#dataSet:訓(xùn)練樣本集
#labels:標(biāo)簽向量
def classfy0(inX,dataSet,labels,k):
#距離計(jì)算
dataSetSize =dataSet.shape[0]#得到數(shù)組的行數(shù)。即知道有幾個(gè)訓(xùn)練數(shù)據(jù)
diffMat =tile(inX,(dataSetSize,1))-dataSet#tile:numpy中的函數(shù)。tile將原來(lái)的一個(gè)數(shù)組,擴(kuò)充成了4個(gè)一樣的數(shù)組。diffMat得到了目標(biāo)與訓(xùn)練數(shù)值之間的差值。
sqDiffMat =diffMat**2#各個(gè)元素分別平方
sqDistances =sqDiffMat.sum(axis=1)#對(duì)應(yīng)列相乘,即得到了每一個(gè)距離的平方
distances =sqDistances**0.5#開方,得到距離。
sortedDistIndicies=distances.argsort()#升序排列
#選擇距離最小的k個(gè)點(diǎn)。
classCount={}
for i in range(k):
voteIlabel=labels[sortedDistIndicies[i]]
classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
#排序
sortedClassCount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)
return sortedClassCount[0][0]
意外收獲
把自己寫的模塊加入到python默認(rèn)就有的搜索路徑:在python/lib/-packages目錄下建立一個(gè) xxx.pth的文件,寫入自己寫的模塊所在的路徑即可
- python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)(一)K近鄰法
- python實(shí)現(xiàn)K近鄰回歸,采用等權(quán)重和不等權(quán)重的方法
- 用python實(shí)現(xiàn)k近鄰算法的示例代碼
- python K近鄰算法的kd樹實(shí)現(xiàn)
- python實(shí)現(xiàn)KNN近鄰算法
- K最近鄰算法(KNN)---sklearn+python實(shí)現(xiàn)方式
- Python K最近鄰從原理到實(shí)現(xiàn)的方法
- python實(shí)現(xiàn)K最近鄰算法
- python機(jī)器學(xué)習(xí)案例教程——K最近鄰算法的實(shí)現(xiàn)
- K近鄰法(KNN)相關(guān)知識(shí)總結(jié)以及如何用python實(shí)現(xiàn)
相關(guān)文章
python實(shí)現(xiàn)的DES加密算法和3DES加密算法實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)的DES加密算法和3DES加密算法,以實(shí)例形式較為詳細(xì)的分析了DES加密算法和3DES加密算法的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-06-06MNIST數(shù)據(jù)集轉(zhuǎn)化為二維圖片的實(shí)現(xiàn)示例
這篇文章主要介紹了MNIST數(shù)據(jù)集轉(zhuǎn)化為二維圖片的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Python os.path.exists()函數(shù)總是返回false的解決方案
這篇文章主要介紹了Python os.path.exists()函數(shù)總是返回false的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03Python3 + Appium + 安卓模擬器實(shí)現(xiàn)APP自動(dòng)化測(cè)試并生成測(cè)試報(bào)告
這篇文章主要介紹了Python3 + Appium + 安卓模擬器實(shí)現(xiàn)APP自動(dòng)化測(cè)試并生成測(cè)試報(bào)告,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01python之模擬鼠標(biāo)鍵盤動(dòng)作具體實(shí)現(xiàn)
這篇文章主要介紹了python之模擬鼠標(biāo)鍵盤動(dòng)作具體實(shí)現(xiàn),有需要的朋友可以參考一下2013-12-12使用python遠(yuǎn)程操作linux過(guò)程解析
這篇文章主要介紹了使用python遠(yuǎn)程操作linux過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Python?matplotlib繪制散點(diǎn)圖配置(萬(wàn)能模板案例)
這篇文章主要介紹了Python?matplotlib繪制散點(diǎn)圖配置(萬(wàn)能模板案例),散點(diǎn)圖是指在??回歸分析???中,數(shù)據(jù)點(diǎn)在直角坐標(biāo)系平面上的?分布圖???,散點(diǎn)圖表示因變量隨??自變量???而?變化???的大致趨勢(shì),據(jù)此可以選擇合適的函數(shù)??對(duì)數(shù)???據(jù)點(diǎn)進(jìn)行?擬合2022-07-07