《機器學習實戰》k最近鄰演算法(K-Nearest Neighbor,Python實現)
============================================================================================
《機器學習實戰》系列部落格是博主閱讀《機器學習實戰》這本書的筆記,包含對其中演算法的理解和演算法的Python程式碼實現
另外博主這裡有機器學習實戰這本書的所有演算法原始碼和演算法所用到的原始檔,有需要的留言
============================================================================================
一、什麼是看KNN演算法?
二、KNN演算法的一般流程
三、KNN演算法的Python程式碼實現
numpy 模 塊 參 考教程:http://old.sebug.net/paper/books/scipydoc/index.html
決策樹(ID3)演算法請參考:http://blog.csdn.net/gamer_gyt/article/details/47679017
一:什麼是看KNN演算法?
kNN演算法全稱是k-最近鄰演算法(K-Nearest Neighbor)
kNN演算法的核心思想是如果一個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。
下邊舉例說明:
即使不知道未知電影屬於哪種型別,我們也可以通過某種方法計算出來,如下圖
現在我們得到了樣本集中與未知電影的距離,按照距離的遞增順序,可以找到k個距離最近的電影,假定k=3,則三個最靠近的電影是和he is not realy into Dudes,Beautiful women, California man kNN演算法按照距離最近的三部電影型別決定未知電影型別,這三部都是愛情片,所以未知電影的型別也為愛情片
二:KNN演算法的一般流程
三、KNN演算法的Python程式碼實現
二、KNN演算法的一般流程
三、KNN演算法的Python程式碼實現
numpy 模 塊 參 考教程:http://old.sebug.net/paper/books/scipydoc/index.html
決策樹(ID3)演算法請參考:http://blog.csdn.net/gamer_gyt/article/details/47679017
一:什麼是看KNN演算法?
kNN演算法全稱是k-最近鄰演算法(K-Nearest Neighbor)
kNN演算法的核心思想是如果一個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。
下邊舉例說明:
即使不知道未知電影屬於哪種型別,我們也可以通過某種方法計算出來,如下圖
現在我們得到了樣本集中與未知電影的距離,按照距離的遞增順序,可以找到k個距離最近的電影,假定k=3,則三個最靠近的電影是和he is not realy into Dudes,Beautiful women, California man kNN演算法按照距離最近的三部電影型別決定未知電影型別,這三部都是愛情片,所以未知電影的型別也為愛情片
二:KNN演算法的一般流程
step.1---初始化距離為最大值
step.2---計算未知樣本和每個訓練樣本的距離dist
step.3---得到目前K個最臨近樣本中的最大距離maxdist
step.4---如果dist小於maxdist,則將該訓練樣本作為K-最近鄰樣本
step.5---重複步驟2、3、4,直到未知樣本和所有訓練樣本的距離都算完
step.6---統計K-最近鄰樣本中每個類標號出現的次數
step.7---選擇出現頻率最大的類標號作為未知樣本的類標號
三、KNN演算法的Python程式碼實現
#encoding:utf-8
from numpy import *
import operator
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
def classify0(inX,dataSet,labels,k):
#返回“陣列”的行數,如果shape[1]返回的則是陣列的列數
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):
#返回距離最近的k個點所對應的標籤值
voteIlabel = labels[sortedDistIndicies[i]]
#存放到字典中
classCount[voteIlabel] = classCount.get(voteIlabel,0)+1
#排序 classCount.iteritems() 輸出鍵值對 key代表排序的關鍵字 True代表降序
sortedClassCount = sorted(classCount.iteritems(),key = operator.itemgetter(1),reverse = True)
#返回距離最小的點對應的標籤
return sortedClassCount[0][0]
呼叫方式:開啟CMD,進入kNN.py檔案所在的目錄,輸入Python,依次輸入import kNN group,labels = kNN.createDataSet() kNN.classify0([0,0],group,lables,3)
相關文章
- k近鄰演算法python實現 -- 《機器學習實戰》演算法Python機器學習
- 機器學習演算法(三):K近鄰(k-nearest neighbors)初探機器學習演算法REST
- 機器學習實戰----k值近鄰演算法(Python語言)機器學習演算法Python
- 機器學習實戰筆記-k近鄰演算法機器學習筆記演算法
- 機器學習——最鄰近規則分類(K Nearest Neighbor)KNN演算法機器學習RESTKNN演算法
- 用Python實現K-近鄰演算法Python演算法
- 機器學習——最鄰近規則分類(K Nearest Neighbor)KNN演算法的應用機器學習RESTKNN演算法
- 機器學習——K近鄰演算法機器學習演算法
- 機器學習實戰2.1. 超詳細的k-近鄰演算法KNN(附Python程式碼)機器學習演算法KNNPython
- k近鄰演算法的實現:kd樹演算法
- 機器學習-K近鄰演算法-KNN機器學習演算法KNN
- 機器學習-11-k近鄰演算法機器學習演算法
- 機器學習經典分類演算法 —— k-近鄰演算法(附python實現程式碼及資料集)機器學習演算法Python
- 機器學習演算法之K近鄰演算法機器學習演算法
- 機器學習演算法——kNN(k-近鄰演算法)機器學習演算法KNN
- 樸素貝葉斯演算法的python實現 -- 機器學習實戰演算法Python機器學習
- 決策樹ID3演算法python實現 -- 《機器學習實戰》演算法Python機器學習
- K-近鄰演算法介紹與程式碼實現演算法
- 機器學習——KNN(K近鄰)機器學習KNN
- 機器學習之k-means聚類演算法(python實現)機器學習聚類演算法Python
- 【Python機器學習實戰】聚類演算法(1)——K-Means聚類Python機器學習聚類演算法
- K近鄰演算法:機器學習萌新必學演算法演算法機器學習
- 機器學習筆記1(K-近鄰演算法)機器學習筆記演算法
- 機器學習_K近鄰Python程式碼詳解機器學習Python
- 《機器學習實戰》kMeans演算法(K均值聚類演算法)機器學習演算法聚類
- 機器學習實戰ByMatlab(3):K-means演算法機器學習Matlab演算法
- K-最近鄰法(KNN)簡介KNN
- Python:K-近鄰演算法Python演算法
- 01-kNN演算法實戰-(機器學習實戰)KNN演算法機器學習
- 《機器學習實戰》中的程式清單2-1 k近鄰演算法(kNN)classify0都做了什麼機器學習演算法KNN
- python機器學習實戰(二)Python機器學習
- 基於鄰域粗糙集演算法python實現演算法Python
- 圖說十大資料探勘演算法(一)K最近鄰演算法大資料演算法
- k-鄰近演算法實現約會網站的配對效果演算法網站
- 機器學習之kNN演算法(純python實現)機器學習KNN演算法Python
- Python實現常見機器學習演算法(上)Python機器學習演算法
- K - 近鄰演算法演算法
- K近鄰演算法演算法