K 近鄰演算法清單 KNN

2021-08-20 07:44:56 字數 2186 閱讀 9758

1.k-近鄰演算法偽**:

①計算已知類別資料集中的點與當前點之間的距離

②按照距離遞增次序排序

③選擇與當前點距離最小的k個點

④確定前k個點所在類別(標籤)的出現頻率

⑤返回前k個點出現頻率最高的類別作為當前點的**分類

2.k-近鄰演算法程式清單:

knn.py

# coding:utf-8

# python interpreter: 3.6.5

# author: admain_maxin

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

02_k-近鄰演算法.py

# coding:utf-8

# python interpreter: 3.6.5

# author: admain_maxin

from numpy import *

from knn import createdataset

import operator

# 1.knn演算法清單

def classify(inx, dataset, labels, k):

# 2.距離計算

datasetsize = dataset.shape[0] # 讀取矩陣第一維的長度 datasetsize=4

diffmat = tile(inx, (datasetsize, 1)) - dataset # inx行重複4次 陣列對應元素相減(屬性值對應相減)

sqdiffmat = diffmat**2 # 每個元素平方

sqdistances = sqdiffmat.sum(axis=1) # 行元素求和

distances = sqdistances**0.5 # 求和每個元素分別開根號

# 3.選擇距離最小的k個點

sorteddistindicies = distances.argsort() # 將distance陣列中的元素從小到大排列,提取其索引輸出到sorteddistindicies

classcount = {}

for i in range(k): # range(3):0,1,2

voteilabel = labels[sorteddistindicies[i]] # 獲取最小距離對應的labels中的「標籤」

classcount[voteilabel] = classcount.get(voteilabel, 0) + 1 # 查詢並統計距離最近的k個標籤中a和b出現的頻度

# 4.排序

# 按照字典中的值進行排序

# sorted函式可用於任何迭代器物件進行排序

# sorted(iterable, cmp, key, revrese=false) # 預設為公升序

# reverse = true:降序

# key為待排序元素

# dict.items()返回乙個dict_items物件,物件內部每乙個元素都是乙個元組

# operator.itemgetter(1):獲取物件第乙個域的值

sortedclasscount = sorted(classcount.items(), key=operator.itemgetter(1), reverse=true)

return sortedclasscount[0][0] # 返回第域的「標籤」

if "__main__" == __name__:

group, labels = createdataset()

print(classify([0, 0], group, labels, 3))

# print(classify([1, 1], group, labels, 3))

3.使用k-近鄰演算法改進約會**的配對效果

K 近鄰演算法 KNN

knn k nearest neighbor 假設訓練集有記錄 r1 r2,rn共n條,訓練集的特徵向量及其對應的類別都是已知的,每個記錄的特徵向量為 t1 t2,tk共k個特徵,待測試的記錄為ru 1 計算ru 的特徵向量與訓練集的每條記錄 即r1 r2,rn 的特徵向量的歐式距離,選取距離最小的...

k近鄰演算法 kNN

核心思想 前k個最相似資料中出現次數最多的類別,作為新資料的類別。核心函式 計算距離函式,投票函式 coding utf 8 import random import sys from collections import counter from operator import itemgette...

K近鄰演算法 KNN

k近鄰演算法 knn 何謂k近鄰演算法,即k nearest neighbor algorithm,簡稱knn演算法,單從名字來猜想,可以簡單粗暴的認為是 k個最近的鄰居,當k 1時,演算法便成了最近鄰演算法,即尋找最近的那個鄰居。為何要找鄰居?打個比方來說,假設你來到乙個陌生的村莊,現在你要找到與...