機器學習之KNN k最近鄰演算法 機器學習

2022-05-04 09:00:07 字數 1807 閱讀 2958

knn演算法是機器學習中入門級演算法,屬於監督性學習演算法。supervisedlearning.

通過plinko遊戲來介紹該演算法。

就是隨機在上面投球,然後球進下面的哪個地方就得多少分。

然後在規定得投次數得到最高得分數,應該怎麼投?

然後**每次投能得到多少分?

首先應該通過訓練資料集,看看在每個位置投得點,能得到多少分,然後**點距離每次點得距離,然後排序,那麼**點周圍出現次數最多得就是大概率得到得分數。

1,通過訓練得資料集,提取特徵值和標籤,特徵值就是距離左側得距離。標籤就是投下去得到得分數。

2,選擇**點,和k個距離近得數。計算每個點得距離。

3.排序,前k個點得出現最多次標籤得就是得分得大概率值。

#knn演算法是尋找k個距離最近的鄰居,然後根據已知的鄰居label,出現次數最多的,推斷出測試點的類別。

# polinko 模擬

import numpy as np

import collections as c

def knn(k,predictpoint,feature,label):

# 先求出**點與周圍點的距離,然後排序,找出距離最近的k個點,出現最多的次數,就是**結果。

# map內建函式(func,iterable)

distance = list(map(lambda x: abs(200 - x), feature))

# np.sort()是直接排序,而我們需要feature和labell聯絡一起

# print(np.sort(distance))

# 所以應該使用np.argsort()可以得到排序的後的index,可以與label關聯

sort_index = np.argsort(distance)

# 通過切片找出k個最鄰近的點

return c.counter(label[sort_index][:k]).most_common(1)[0][0] # 返回的是(4,2),表示在k的最鄰近元素,4出現最多次數為2

if __name__ == '__main__':

data = np.array([

[120, 3],

[140, 3],

[160, 3],

[40, 2],

[70, 2],

[200, 4],

[250, 4],

[100, 3]

])feature = data[:,0]

label = data[:,-1]

k = 5

predictpoint = 170

print(knn(k,predictpoint,feature,label))

**結果:

3 

**中給出的資料集是隨機寫的,不一定準。

現在選擇真實的資料集,通過numpy中loadtext()讀取csv文字資料集。

np.loadtxt("data01.csv",delimiter=",")這個第乙個引數檔名稱,第二個delimiter是資料分割符.

然後就和後面一樣,提取特徵值和標籤值,計算k個局裡近的距離。

但是和真實的還有有差距,這個是怎麼回事。

所以造成結果不正確的原因有這些:

還需要1.調整引數,簡稱調參。

2.可能還有其他維度特徵會影響結果,但是現在只給了一種特徵值。

缺點:對於資料量很大得訓練集合,耗費記憶體。對硬體要求較高。

機器學習之KNN(K近鄰演算法)

knn k nearest neighbor 演算法利用的數學思想極少 思想 對於乙個新來的點,根據判斷k個最近的點,來判斷新來的點的類別。過程 1 先計算新來的點與樣本中每乙個點的距離 尤拉距離 2 找到最近的k個點 可以用np.argsort 3 找到k個點中類別最多的點的類 所以k鄰近演算法可...

KNN K最近鄰演算法 例項應用

knn演算法是尋找最近的k個資料,推測新資料的分類 通用步驟 計算距離 常用有歐幾里得距離 馬氏距離 公升序排序 取前k個 加權平均 k的選取 資料分析與預處理 m 惡性 b 良性 其他資料為判斷良性 惡性的依據 劃分資料集 取資料的1 3作為測試集,2 3作為訓練集 import random i...

機器學習之KNN K近鄰演算法(二 演算法案例)

目錄 一 knn的簡單實現案例 二 sklearn的knn應用 鳶尾花資料分類 三 sklearn中knn的重要引數 假設我們有兩類樣本 a和b,均為二維資料,a類包括 2,8 2.5,10 2,9 b類包括 4,2 4,1 4.5,3 測試樣本點為 3,9 首先匯入資料,資料分布如下圖 impor...