python k 近鄰演算法例項分享

2022-10-05 00:09:22 字數 1507 閱讀 8897

簡單說明

這個演算法主要工作是測量不同特徵值之間的距離,有個這個距離,就可以進行分類了。

簡稱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...