k近邻算法python_k-近邻算法的Python实现
本篇文章,想向各位介紹一個非常易于實現的機器學習算法:k-近鄰算法,眾所周知,k-近鄰算法是非常常用的分類算法,現在給出k-近鄰算法的官方解釋:在一個樣本數據集,也稱作訓練樣本集,并且樣本中每個數據都存在標簽,即我們知道樣本集中每一數據與所屬分類的對應關系,輸入沒有標簽的新數據后,將新數據的每個特征與樣本集中的數據對應的特征進行比較,然后算法提取樣本集中特征最相似的數據(最近鄰)的分類標簽。一般來說,我們只選擇樣本集中前k個最相似的數據,這就是k-近鄰算法中k的出處,通常k是不大于20的整數,最后,選擇k個最相似的數據中出現次數最多的分類,作為新數據的分類。通過尋找近鄰來輔助分類可以提升分類的效率,簡化分類的流程。
現在來介紹k-近鄰算法的一般流程:
(1)收集數據:比如問卷法,觀察法等等。
(2)準備數據:距離計算所需的數值,最好是結構化的數據格式。
(3)分析數據:聚類分析、因子分析、相關分析、對應分析、回歸分析、方差分析等。
(4)訓練算法:在k-近鄰中一般不用。
(5)測試算法:計算錯誤率。
(6)使用算法:首先需要輸入樣本數據和結構化的輸出結果,然后運行k-近鄰算法判定輸入數據分別屬于哪個分類,最后應用對計算出的分類執行后續的處理。
介紹完了流程,我們開始導入數據,這次導入數據的代碼環境依然選擇python,首先我們需要有kNN.py的文件,關于kNN的源碼,推薦各位上CodeForge網站上下載,該網站有很多有用的源碼。
有了kNN的源碼之后,我們可能還要編寫一些基本的通用函數,在源碼中增加下面的代碼:
from numpy import *
Import operator
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
在上面的代碼中,我們導入了兩個模塊:第一個是科學計算包Numpy;第二個是運算符模塊,k-近鄰算法執行排序操作時將使用這個模塊提供的函數。
現在我們來實施kNN算法,為每組數據分類,先給出其偽代碼如下:
對未知類別屬性的數據集中的每個點依次執行以下操作:
(1)計算已知類別數據集中的每個點與當前點之間的距離:
(2)按照距離遞增次序排序;
(3)選取與當前距離最小的k個點;
(4)確定前k個點所在類別的出現頻率;
(5)返回前k個點出現頻率最高的類別作為當前點的預測分類。
K_近鄰算法的python實現如下:
def classify0(inX,dataSet,labels,k):
dataSetSize = dataSet.shape[0]
diffMat = tile(inX,(dataSetSize,1))-dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distance = sqDistance**0.5
sortedDistIndicies = distance.argsort()
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]
以上代碼的目的主要是為了計算數據中的點與當前點的距離,根據計算的的距離結果,選擇距離最小的k個點,隨后對這k個點按照從大到小進行排序。(距離計算主要是歐式距離)
為了預測數據所在分類,在python提示符中輸入下列命令:
kNN.classify0([0,0],group,labels,3)
以上是我們用python構造的第一個分類器,這個分類器可以完成很多任務,我們初步完成了構造分類算法。之后的文章中,將會給給位介紹一下k近鄰算法的案例,敬請期待~
作者:徐永瑞 Python愛好者社區專欄作者,請勿轉載,謝謝。
出處:k-近鄰算法的Python實現
配套視頻教程:Python3爬蟲三大案例實戰分享:貓眼電影、今日頭條街拍美圖、淘寶美食 Python3爬蟲三大案例實戰分享
公眾號:Python愛好者社區(微信ID:python_shequ),關注,查看更多連載內容。
加小編個人微信:tsdatajob ,跟作者互動,一起探討。
總結
以上是生活随笔為你收集整理的k近邻算法python_k-近邻算法的Python实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ransomware的斗士——云备份系统
- 下一篇: websocket python爬虫_p