k-近鄰演算法(以下簡稱knn)是分類演算法中比較簡單的一種,knn演算法的一般流程為:(1)收集資料,如從檔案中匯入資料(2)準備資料,將資料轉化為適合計算的格式,如矩陣的形式(3)分析資料(4)測試資料,計算分類的錯誤率(5)應用演算法,給定輸入,得到相應的輸出,指出改資料屬於哪一種分類。
knn演算法的過程如下:
(1)計算資料集中各點與當前點(給定資料)之間的距離;
(2)按照距離的遞增次序排序;
(3)選取與當前點距離最小的k個點
(4)統計前k個點所在的類別出現的頻率
(5)返回頻率最高的點所在的類別,此類別為當前點的**分類
具體實現**如下:
def
classify0
(inx, dataset, labels, k):
datasetsize = dataset.shape[0] #返回矩陣的行數
diffmat = tile(inx, (datasetsize,1)) - dataset
sqdiffmat = diffmat**2
sqdistances = sqdiffmat.sum(axis=1)#計算兩點間的距離
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)
#統計分類出現的頻率,並且按照從高到低排序
# iteritems()是python2.x中的,在python3.x廢除了在這裡用items
return sortedclasscount[0][0]
機器學習實戰學習筆記(一) K 近鄰演算法
k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵和樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中特徵最相似資料 最近鄰 的...
機器學習實戰(一) K 近鄰演算法
簡單來說,k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類 優點 精度高 對異常值不敏感 無資料輸入假定 缺點 計算複雜度高 空間複雜度高 適用資料範圍 數值型和標稱型 工作原理 存在乙個樣本資料集合,樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新...
機器學習實戰 一 k 近鄰演算法
本章介紹機器學習實戰的第乙個演算法 k近鄰演算法 k nearest neighbor 也稱為knn。說到機器學習,一般都認為是很複雜,很高深的內容,但實際上其學習門欄並不算高,具備基本的高等數學知識 包括線性代數,概率論 就可以了,甚至一些演算法高中生就能夠理解了。knn演算法就是乙個原理很好理解...