簡單說明
這個演算法主要工作是測量不同特徵值之間的距離,有個這個距離,就可以進行分類了。
簡稱knn。
已知:訓練集,以及每個訓練集的標籤。
接下來:和訓練集中的資料對比,計算最相似的k個距離。選擇相似資料中最多的那個分類。作為新資料的分類。
python例項
複製** **如下
# -*icagrtpiq- coding: cp936 -*-
#win系統中應用cp936編碼,linux中最好還是utf-8比較好。
from numpy import *#引入科學計算包
import operator #經典python函式庫。運算子模組。
#建立資料集
def createdataset():
group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.www.cppcns.com1]])
labels=['a','a','b','b']
return group,labels
#演算法核心
#inx:用於分類的輸入向量。即將對其進行分類。
#dataset:訓練樣本集
#labels:標籤向量
def classfy0(inx,dataset,labels,k):
#距離計算
datasetsize =dataset.shape[0]#得到陣列的行數。即知道有幾個訓練資料
diffmat =tile(inx,(datasetsize,1))-dataset#tile:numpy中的函式。tile將原來的乙個陣列,擴充成了4個一樣的陣列。diffmat得到了目標與訓練數值之間的差值。
sqdiffmat =diffmat**2#各個元素分別平方
sqdistances =sqdiffmat.sum(axis=1)#對應列相乘,即得到了每乙個距離的平方
distances =sqdistances**0.5#開方,得到距離。
sorteddistindicies=distances.argsort()#公升序排列
#選擇距離最小的k個點。
classcount={}
for i in range(k):
voteilabel=labels[sorteddistindicies[i]]
classcount[voteilabel]=classcount.get(voteilabel,0)+1
#排序sortedclasscountwww.cppcns.com=sorted(classcount.iteritems(),key=operator.itemgetter(1),reverse=true)
return sortedclasscount[0][0]
意外收穫
把自己寫的模組加入到python預設就有的搜尋路徑:在python/lib/-packages目錄下建立乙個 ***.pth的檔案,寫入自己寫的模組所在的路徑即可
本文標題: python k-近鄰演算法例項分享
本文位址:
python k近鄰分類器 KNN
k近鄰分類器,通過計算待分類資料點,與已有資料集點的所有資料點的距離。取距離最小的前k個點,根據 少數服從多數 的原則,將這個資料點劃分為出現次數最多的那個類別。sklean庫s,可以使用sklean.neighbors.kneighborsclassiffier建立k近鄰分類器 主要引數 from...
python k鄰近演算法
k鄰近是一種不顯式的學習演算法,其實我感覺它就像個無賴,比如說一堆小朋友玩,小藍問洪濤 你是好人還是壞蛋?洪濤從身邊抓了3個小朋友,其中有兩個是好人,乙個是壞蛋,洪濤就可以說 俺身邊大多數人都是好人,所以俺也是好人!如下 import numpy as np from sklearn.neighbo...
k 近鄰演算法例項
步驟 1.1 計算已知點和被求點的距離 1.2 按距離遞增排序 1.3 求出距離最近的前k個點的類別最大值作為目標分類 from numpy import import operator defcreatedateset group array 1.0,1.1 1.0,1.0 0,0 0,0.1 l...