簡單來說,k-近鄰演算法採用測量不同特徵值之間的距離方法進行分類
優點:精度高、對異常值不敏感、無資料輸入假定工作原理:缺點:計算複雜度高、空間複雜度高
適用資料範圍:數值型和標稱型
存在乙個樣本資料集合,樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中特徵最相似資料(最近鄰)的 k 個分類標籤,出現次數最多的分類,作為新資料的分類。
knn 演算法流程:
knn 分類器**
def classify0(inx, dataset, labels, k):
datasetsize = dataset.shape[0]
diffmat = tile(inx, (datasetsize,1)) - dataset
sqdiffmat = diffmat**2
sqdistances = sqdiffmat.sum(axis=1)
distances = sqdistances**0.5
#距離計算
sorteddistindicies = distances.argsort()
#距離排序
classcount={}
for i in range(k):
voteilabel = labels[sorteddistindicies[i]]
classcount[voteilabel] = classcount.get(voteilabel,0) + 1
#選取與當前點距離最小的 k 個點
sortedclasscount = sorted(classcount.items(), key=operator.itemgetter(1), reverse=true)
#確定前 k 個點所在類別的出現頻率並排序
return sortedclasscount[0][0]
#返回最高的頻率分類
測試:
資料集生成函式為
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
測試資料樣本為 [0,0],k 取3。
print(classify0([0,0],group,labels,3))
結果為 b 類別 機器學習實戰 一 k 近鄰演算法
本章介紹機器學習實戰的第乙個演算法 k近鄰演算法 k nearest neighbor 也稱為knn。說到機器學習,一般都認為是很複雜,很高深的內容,但實際上其學習門欄並不算高,具備基本的高等數學知識 包括線性代數,概率論 就可以了,甚至一些演算法高中生就能夠理解了。knn演算法就是乙個原理很好理解...
《機器學習實戰》 K 近鄰演算法
基本原理 通過計算新資料與給定的樣本資料之間的距離,來確定相似度排名 然後取前k個最相似的樣本,統計這k 一般不大於20 個樣本中出現最多的分類,設為新資料的分類。新資料,訓練樣本集,樣本資料標籤 即分類 最近鄰 前k個最相似資料 最近鄰標籤 演算法實施 首先提取要比較的特徵,確定各特徵的權重,進行...
機器學習實戰 K 近鄰演算法
簡單的說,k 近鄰演算法採用測量不同特徵值之間的距離辦法進行分類.收集資料 可以使用任何方法。準備資料 距離計算所需要的數值,最好是結構化的資料格式。分析資料 可以使用任何方法。訓練演算法 此步驟不適用於k 近鄰演算法。測試演算法 計算錯誤率。使用演算法 首先需要輸入樣本資料和結構化的輸出結果,然後...