一看就懂的 機器學習k 近鄰演算法(KNN)

2021-10-05 13:12:05 字數 3080 閱讀 9364

基礎知識:

1,機器學習想相關概念:

2,機器學習和深度學習的應用:

3,機器學習型別

k-近鄰演算法(knn)是 機器學習中的有監督學習中聚類模型

1,概念原理:k-近鄰演算法(k-nearest neighbour algorithm, knn),是資料探勘技術中原理最簡單的演算法。給定乙個已知標籤類別的訓練資料集,輸入沒有標籤的新資料後,在訓練資料集中找到與新資料最鄰近的k個例項,如果這k個例項中的多數屬於某個類別,那麼新資料就屬於這個類別。簡單理解為:由那些離x最近的k個點來投票 決定x歸為哪一類。

舉個栗子:使用k-近鄰演算法分類乙個電影是愛情片還是動作片

在這個**中, 每個電影有兩個特徵,我們可以通過人眼判斷出新電影屬於什麼型別,那如果是n個呢?這就需要k-近鄰演算法上場啦!

我們將**畫為散點圖如下:

通過觀察,從散點圖中大致判斷,新電影是愛情片。那knn演算法是如何判斷的呢? 沒錯,就是距離!

二維平面兩點間距離公式:

n維空間兩點間距離公式:

通過計算我們可以得到訓練集中所有電影與未知電影的距離,如下表所示:

通過上表的計算結果,可以得出新電影到愛情片《後來的我們》距離最近,為29.1.如果僅僅根據這個結果,就判定新電影為愛情片,那這個演算法就叫最近鄰演算法,而非k-近鄰演算法、

k-近鄰演算法步驟如下:

2,k-近鄰演算法的python實現

#構建資料集

import pandas as pd

filmdata =

film_data = pd.dataframe(filmdata)

print

(film_data)

#計算已知類別中資料點與當前點的距離

new_data =[24

,67]dist =

list((

((film_data.iloc[:6

,1:3

]-new_data)**2

).sum(1)

)**0.5)

print

(dist)

#對距離進行排序,然後選擇距離最近的k個點

k =4

dist_l = pd.dataframe(

)dr = dist_l.sort_values(by=

'dist')[

:k]print

(dr)

3,封裝函式

import pandas as pd

filmdata =

film_data = pd.dataframe(filmdata)

new_data =[24

,67]'''

函式功能:knn分類器

引數說明:

inx: 需要進行**分類的資料集

dataset: 已知分類標籤的資料集(訓練集 )

k: 超引數,選擇距離最小的k個點

返回: result: **分類結果

'''def

classify0

(inx,dataset,k)

: result =

dist =

list((

((dataset.iloc[:,

1:3]

- inx)**2

).sum(1)

)**0.5)

dist_l = pd.dataframe(

) dr = dist_l.sort_values(by=

'dist')[

:k] re = dr.loc[:,

'labels'

].value_counts()0

])return result

inx = new_data

dataset = film_data

k =4

print

( classify0(inx,dataset,k)

)

這就是我們使用k-近鄰演算法構建的乙個分類器,可以看出,分類器給的答案還是比較符合我們的預期的。

那麼問題來了:分類器給出的答案是否永遠都正確? 答案一定是否定的,分類器並不會得到100%正確的結果,我們可以使用很多方法來驗證分類器的準確率。 此外,分類器的效能會受到很多因素的影響,比如k的取值,就在很大程度上影響了分類器的**結果,還有分類器的設定、原始資料集等等。 為了測試分類器的效果,我們可以把原始資料集分為兩部分,一部分用來訓練演算法,稱為訓練集;另一部分用來測試演算法的準確率,稱為測試集。 我們不難發現,k-近鄰演算法沒有進行資料的訓練,直接使用未知的資料與已知的資料進行比較,得到結果,因此,k-近鄰演算法不具有顯示的學習過程。

4,總結

優點:

缺點:

機器學習 k 近鄰演算法

一.k 近鄰演算法概述 簡單地說,k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。k 近鄰演算法 knn 它的工作原理是 存在乙個樣本資料集,也稱訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將資料的每個特徵與樣本集合中資...

機器學習 K近鄰演算法

用例一 from sklearn.neighbors import nearestneighbors import numpy as np x np.array 1,1 2,1 3,2 1,1 2,1 3,2 nbrs nearestneighbors n neighbors 2,algorithm...

機器學習 K近鄰演算法

工作原理 存在乙個訓練樣本資料集合,每組資料對應乙個標籤及分類 比如下邊例子為前兩個資料都為a類 輸入測試樣本後通過計算求出測試樣本與訓練樣本的歐氏距離d,取前k個最小的值,這k組資料對應的標籤分類最多的那種,就是測試樣本的標籤。訓練樣本資料 1.0,1.1 1.0,1.0 0,0 0,0.1 歐氏...