資源簡介
代碼片段和文件信息
#導入numpy包用于科學計算
#導入operator包用于運算符計算
from?numpy?import?*
import?operator
import?matplotlib.pyplot?as?plt
#距離計算函數
#inX?用于分類的輸入向量
#dataSet?輸入的訓練樣本集
#labels?標簽向量
#k?選擇最近鄰的數目
def?classify0(a?dataSet?labels?k):
????dataSetSize?=?dataSet.shape[0]????????????????????????????????????#獲得數據集的個數
????#差值計算,距離相減
????diffMat?=?tile(a?(dataSetSize1))?-?dataSet????????????????????#numpy中tile函數用于將inX,生成dataSetSize行1列的數據
????#差值平方
????sqDiffMat?=?diffMat**2
????#平方和?axis=1表示將數據的每一行相加
????sqDistances?=?sqDiffMat.sum(axis=1)
????#開平方
????distances?=?sqDistances**0.5??????????????????????????????????????#0.5次方相當于開平方得到所有點的距離(distances是一個列表,包含了4個點與a點的距離)
????#排序???argsort()序號排序
????sortedDistIndicies?=?distances.argsort()??????????????????????????#由低到高進行排序,此處得到的數據排序后的索引值
????print(‘距離最近的k個鄰居是:‘dataSet[sortedDistIndicies[:k]])
????#?print(‘對應的標簽是:‘labels[sortedDistIndicies[:k]])
????classCount={}?????????????????????????????????????????????????????#初始化統計字典
????#找出前k個值
????for?i?in?range(k):
????????voteIlabel?=?labels[sortedDistIndicies[i]]????????????????????#獲得對應標簽
????????#統計前k次標簽出現的次數
????????classCount[voteIlabel]?=?classCount.get(voteIlabel0)?+?1
- 上一篇:一個簡單的python爬蟲
- 下一篇:基于PyQt5的視頻播放器設計
評論
共有 條評論