"""from numpy import * #科學計算包
import operator #運算子模組
defcreatdataset
(): group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) #建立資料集
labels=['a','a','b','b'] #建立標籤
return group,labels
#inx,用於分類的輸入向量。即將對其進行分類。
defclassify0
(inx,dataset,labels,k):
# inx用於需要分類的資料,dataset輸入訓練集
######輸入與訓練樣本之間的距離計算######
datasetsize=dataset.shape[0] # 讀取資料集行數,shape[1]則為列數
diffmat=tile(inx,(datasetsize,1)) -dataset
#tile:numpy中的函式。tile將原來的乙個陣列,擴充成了4個一樣的陣列。
#diffmat得到了目標與訓練數值之間的差值。
sqdiffmat=diffmat**2
#各個元素分別平方
sqdistances=sqdiffmat.sum(axis=1) # 每乙個列向量相加,axis=0為行相加
#對應列相乘,即得到了每乙個距離的平方
distances=sqdistances**0.5
#開方,得到距離。
sorteddistindicies=distances.argsort() #公升序排列
#選擇距離最小的k個點。
classcount={}
for i in range (k):
voteilabel=labels[sorteddistindicies[i]] #排名前k個貼標籤
classcount[voteilabel]=classcount.get(voteilabel,0)+1
#get(key,default=none),就是造字典
######找到出現次數最大的點######
#以value值大小進行排序,reverse=true降序
sortedclasscount=sorted(classcount.iteritems(),key=operator.itemgetter(1),
reverse=true)
#key = operator.itemgetter(1),operator.itemgetter函式
#獲取的不是值,而是定義了乙個函式,通過該函式作用到物件上才能獲取值
return sortedclasscount [0] [0]
#返回出現次數最多的value的key
datasetsize=dataset.shape[0] # 讀取資料集
diffmat=tile(inx,(datasetsize,1)) -dataset #做擴充套件
sqdiffmat=diffmat**2
#平方
sqdistances=sqdiffmat.sum(axis=1) #列向量累加
distances=sqdistances**0.5
#開方
classcount={}
for i in range (k): #排名前k個
voteilabel=labels[sorteddistindicies[i]] #排名前k個貼標籤
classcount[voteilabel]=classcount.get(voteilabel,0)+1
#分類計數
sortedclasscount=sorted(classcount.iteritems(),key=operator.itemgetter(1),
reverse=true) #計數排序
return sortedclasscount [0] [0] #返回排序次數最多的
機器學習 k近鄰法 python
1 k kk近鄰法是基本且簡單的分類與回歸方法。k kk近鄰法的基本做法是 對給定的訓練例項點和輸入例項點,首先確定輸入例項點的k kk個最近鄰訓練例項點,然後利用這k kk個訓練例項點的類的多數來 輸入例項點的類。2 k kk近鄰模型對應於基於訓練資料集對特徵空間的乙個劃分。k kk近鄰法中,當訓...
機器學習python實戰 k近鄰演算法
前一周學習了一些理論的知識,雖然懂了原理,但感覺真要寫起 來還是摸不著頭腦,所以接下來的幾天都打算在 方面下一番功夫。由於接觸python不久,且能力有限,難免有些錯誤的或者理解不到位的地方,希望讀者不吝指正!k 近鄰演算法 k nn 的基本原理 存在乙個樣本資料集合,也叫訓練樣本集,並且樣本集中的...
機器學習之K近鄰
k近鄰演算法在機器學習演算法中是最容易理解並且是最容易使用的演算法,下面是機器學習實戰中對k近鄰演算法的注釋。created on sep 16,2010 knn k nearest neighbors input inx vector to compare to existing dataset ...