k-近鄰演算法(knn)採用測量不同特徵值之間的距離方法進行分類。
優點:精度高、對異常值不敏感、無資料輸入假定。
缺點:計算複雜度高、空間複雜度高。
適用資料範圍:數值型和標稱型。
描述:存在乙個樣本資料集合,樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸人沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中特徵最相似資料(最近鄰)的分類標籤(一般使用歐氏距離或曼哈頓距離)。一般來說,我們只選擇樣本資料集中前k個最相似的資料,通常k是不大於20的整數。最後,選擇k個最相似資料中出現次數最多的分類,作為新資料的分類。
步驟:
1)計算測試資料與各個訓練資料之間的距離;
2)按照距離的遞增關係進行排序;
3)選取距離最小的k個點;
4)確定前k個點所在類別的出現頻率;
5)返回前k個點中出現頻率最高的類別作為測試資料的**分類;
python實現:
def classify0(inx, dataset, labels, k):#inx表示輸入的新資料,dataset表示訓練資料集合,labels表示結果標籤
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
sortedclasscount = sorted(classcount.items(), key=operator.itemgetter(1), reverse=true)
return sortedclasscount[0][0]
實戰問題——電影分類、手寫數字識別
機器學習實戰之K 近鄰演算法
k 近鄰演算法工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的資料進行比較,然後演算法提取樣本集中特徵最相似資料 最鄰近 的分類標籤。一般來說,我們只選取樣本資料集...
機器學習實戰之k近鄰演算法
k近鄰演算法 或者說k最近鄰 knn,k nearestneighbor 在乙個空間中有許多樣本,這時候來了乙個新的樣本即測試點,那麼如何判斷這個樣本的類別。做法就是求測試點和空間中每個樣本的距離,用距離最近的前k個判斷。比如下圖新來了乙個點,這時候k 3,離它最近的3個點就是乙個為正方形,兩個為三...
《機器學習實戰》之K 近鄰演算法
k 近鄰演算法實現 from numpy import import operator from os import listdir 資料集 defcreatedataset group array 1.0,1.1 1.0,1.0 0,0 0,0.1 labels a a b b return gr...