k近鄰 k NN 演算法的python實現

2021-10-02 09:18:56 字數 1283 閱讀 5330

k-nn演算法是實現分類的一種簡單有效的演算法,並且可以實現多類別分類。k-nn演算法的三個要素為:距離度量、k值的選擇以及分類決策規則。

本文採用歐式距離作為距離度量,近鄰數量選取為7,採用多數票方式決定樣本的型別。

from sklearn import datasets

import matplotlib.pyplot as plt # 畫圖工具

import numpy as np

import heapq

from collections import counter

x, y = datasets.make_classification(n_samples=

1000

, n_features=

10, n_classes=

3, n_informative=

3, random_state=1)

#生成1000個樣本,共有10個屬性,分為3個類別

np.random.seed(0)

x_new = np.random.randint(5,

20,[10

,1])

#生成乙個隨機的樣本,作為新來樣本

defdistance()

: distances =

for i in

range

(x.shape[0]

):t =

0for j in

range

(x_new.shape[0]

):t +=

(x_new[j]

- x[i]

[j])**2

result =

map(distances.index, heapq.nsmallest(

7, distances)

)#找出距離最小的7個樣本在列表中的index

y_list =

for i in

list

(result):)

#生成類別列表

y_counter = counter(y_list)

#對列表列表進行統計

for i in

dict

(y_counter)

:print

('類別是:{}'

.format

(i))

#展示投票法最終的結果

break

distance(

)

執行**後,得到最終的結果為:

參考:《統計學習方法》 李航著

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時,演算法便成了最近鄰演算法,即尋找最近的那個鄰居。為何要找鄰居?打個比方來說,假設你來到乙個陌生的村莊,現在你要找到與...