python k-近鄰演算法執行個體分享

來源:互聯網
上載者:User
簡單說明

這個演算法主要工作是測量不同特徵值之間的距離,有個這個距離,就可以進行分類了。

簡稱kNN。

已知:訓練集,以及每個訓練集的標籤。

接下來:和訓練集中的資料對比,計算最相似的k個距離。選擇相似資料中最多的那個分類。作為新資料的分類。

python執行個體

代碼如下:


# -*- coding: cp936 -*-

#win系統中應用cp936編碼,linux中最好還是utf-8比較好。
from numpy import *#引入科學計算包
import operator #經典python函數庫。運算子模組。

#建立資料集
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:用於分類的輸入向量。即將對其進行分類。
#dataSet:訓練樣本集
#labels:標籤向量
def classfy0(inX,dataSet,labels,k):
#距離計算
dataSetSize =dataSet.shape[0]#得到數組的行數。即知道有幾個訓練資料
diffMat =tile(inX,(dataSetSize,1))-dataSet#tile:numpy中的函數。tile將原來的一個數組,擴充成了4個一樣的數組。diffMat得到了目標與訓練數值之間的差值。
sqDiffMat =diffMat**2#各個元素分別平方
sqDistances =sqDiffMat.sum(axis=1)#對應列相乘,即得到了每一個距離的平方
distances =sqDistances**0.5#開方,得到距離。
sortedDistIndicies=distances.argsort()#升序排列
#選擇距離最小的k個點。
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預設就有的搜尋路徑:在python/lib/-packages目錄下建立一個 xxx.pth的檔案,寫入自己寫的模組所在的路徑即可

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.