KNN 演算法 理論篇 如何給電影進行分類

2021-10-10 23:34:43 字數 2701 閱讀 9234

公號:碼農充電站pro主頁:

knn 演算法的全稱是k-nearest neighbor,中文為k 近鄰演算法,它是基於距離的一種演算法,簡單有效。

knn 演算法即可用於分類問題,也可用於回歸問題。

假如我們統計了一些電影資料,包括電影名稱,打鬥次數,接吻次數,電影型別,如下:

電影名稱

打鬥次數

接吻次數

電影型別

黑客帝國

1156

動作片功夫

1098

動作片戰狼

1209

動作片戀戀筆記本578

愛情片鐵達尼號660

愛情片花樣年華869

愛情片可以看到,電影分成了兩類,分別是動作片和愛情片。

如果現在有一部新的電影a,它的打鬥和接吻次數分別是80 和7,那如何用knn 演算法對齊進行分類呢?

我們可以將打鬥次數作為x 軸,接吻次數作為y 軸,將上述電影資料畫在乙個座標系中,如下:

關於如何用python 畫圖,可以參考文章《如何使用python 進行資料視覺化》

通過上圖可以直觀的看出,動作電影與愛情電影的分布範圍是不同的。

knn 演算法基於距離,它的原理是:選擇與待分類資料最近的k 個點,這k 個點屬於哪個分類最多,那麼待分類資料就屬於哪個分類

所以,要判斷電影a 屬於哪一類電影,就要從已知的電影樣本中,選出距離電影a 最近的k 個點:

比如,我們從樣本中選出三個點(即 k 為 3),那麼距離電影a 最近的三個點是《功夫》,《黑客帝國》和《戰狼》,而這三部電影都是動作電影。因此,可以判斷電影a 也是動作電影。

另外,我們還要處理兩個問題:

如何判斷點之間的距離。

如何確定k 的值。

關於點之間的距離判斷,可以參考文章《計算機如何理解事物的相關性》。

至於k 值的選擇,k 值較大或者較小都會對模型的訓練造成負面影響,k 值較小會造成過擬合,k 值較大欠擬合

因此,k 值的選擇,一般採用交叉驗證的方式。

交叉驗證的思路是,把樣本集中的大部分樣本作為訓練集,剩餘部分用於**,來驗證分類模型的準確度。一般會把 k 值選取在較小範圍內,逐一嘗試k 的值,當模型準確度最高時,就是最合適的k 值。

可以總結出,knn 演算法用於分類問題時,一般的步驟是:

計算待分類物體與其他物體之間的距離;

按照距離進行排序,統計出距離最近的 k 個鄰居;

k 個最近的鄰居,屬於哪個分類最多,待分類物體就屬於哪一類。

如果,我們現在有一部電影b,知道該電影屬於動作電影,並且知道該電影的接吻次數是7,現在想**該電影的打鬥次數是多少?

這個問題就屬於回歸問題

分類問題的**結果是離散值,

回歸問題的**結果是連續值。

首先看下,根據已知資料,如何判斷出距離電影b 最近的k 個點。

我們依然設定k 為3,已知資料為:

根據已知資料可以畫出下圖:

圖中我畫出了一條水平線,這條線代表所有接吻次數是7 的電影,接下來就是要找到距離這條線最近的三部(k 為 3)動作電影。

可以看到,距離這條水平線最近的三部動作電影是《功夫》,《黑客帝國》和《戰狼》,那麼這三部電影的打鬥次數的平均值,就是我們**的電影b 的打鬥次數。

所以,電影b 的打鬥次數是:

本篇文章主要介紹了knn 演算法的基本原理,它簡單易懂,即可處理分類問題,又可處理回歸問題。

knn 演算法是基於距離的一種機器學習演算法,需要計算測試點與樣本點之間的距離。因此,當資料量大的時候,計算量就會非常龐大,需要大量的儲存空間和計算時間。

另外,如果樣本資料分類不均衡,比如有些分類的樣本非常少,那麼該類別的分類準確率就會很低。因此,在實際應用中,要特別注意這一點。

(本節完。)

推薦閱讀:

決策樹演算法-理論篇-如何計算資訊純度

決策樹演算法-實戰篇-鳶尾花及波士頓房價**

樸素貝葉斯分類-理論篇-如何通過概率解決分類問題

樸素貝葉斯分類-實戰篇-如何進行文字分類

KNN演算法理解

一 演算法概述 1 knn演算法又稱為k近鄰分類 k nearest neighbor classification 演算法。最簡單平凡的分類器也許是那種死記硬背式的分類器,記住所有的訓練資料,對於新的資料則直接和訓練資料匹配,如果存在相同屬性的訓練資料,則直接用它的分類來作為新資料的分類。這種方式...

KNN演算法理解

一 演算法概述 1 knn演算法又稱為k近鄰分類 k nearest neighbor classification 演算法。最簡單平凡的分類器也許是那種死記硬背式的分類器,記住所有的訓練資料,對於新的資料則直接和訓練資料匹配,如果存在相同屬性的訓練資料,則直接用它的分類來作為新資料的分類。這種方式...

KNN演算法理解

一 演算法概述 1 knn演算法又稱為k近鄰分類 k nearest neighbor classification 演算法。最簡單平凡的分類器也許是那種死記硬背式的分類器,記住所有的訓練資料,對於新的資料則直接和訓練資料匹配,如果存在相同屬性的訓練資料,則直接用它的分類來作為新資料的分類。這種方式...