基於KNN演算法的少量資料分類實驗

2021-08-21 00:26:35 字數 1929 閱讀 9876

利用knn分類演算法來對汽車碰撞聲以及汽車鳴笛聲進行識別,本次實驗使用的聲學特徵是37維mfcc特徵,其中包括前12維倒譜係數、12維一階差分係數、12維二階差分係數以及1維短時訊號能量譜係數。

1.1實驗步驟流程圖

knn(k-nearest nerghbor)是一種有監督分類演算法,是最簡單的機器學習演算法之一,顧名思義,其演算法主體思想就是根據距離相近的鄰居類別,來判定自己的所屬類別。演算法的前提是需要有乙個已被標記類別的訓練資料集,具體的計算步驟分為以下三步:

(1)、計算測試物件與訓練集中所有物件的距離,可以是歐式距離、余弦距離等,比較常用的是較為簡單的歐式距離;

(2)、找出上步計算的距離中最近的k個物件,作為測試物件的鄰居;

(3)、找出k個物件中出現頻率最高的物件,其所屬的類別就是該測試物件所屬的類別。

(1)、優點

思想簡單,易於理解,易於實現,無需估計引數,無需訓練;

適合對稀有事物進行分類;

特別適合於多分類問題。

(2)、缺點

懶惰演算法,進行分類時計算量大,要掃瞄全部訓練樣本計算距離,記憶體開銷大,評分慢;

當樣本不平衡時,如其中乙個類別的樣本較大,可能會導致對新樣本計算近鄰時,大容量樣本佔大多數,影響分類效果;

可解釋性較差,無法給出決策樹那樣的規則。

本次實驗使用汽車碰撞聲和汽車鳴笛聲各10條資料作為訓練資料集,臨近k值選取9。

使用50條聲音片段來測試分類器,並將分類結果結果儲存到**中,如下表列出的16條分類結果資料。

抽取的檔名

抽取的幀數

knn演算法是否正確識別

標籤及其出現的次數

crash1

44-53

是crash2

278-287

是crash3

118-127

是crash4

6-15

是crash5

22-31

是crash6

10-19

否crash7

44-53

否crash8

88-97

是crash9

125-134

是crash10

5-14

是crash11

6-15

否crash12

3-12

否crash13

11-20

否crash14

27-36

否horn1

8-17

是horn3

3-12

是表1 分類結果**

50個樣本資料中,分類器正確識別31個樣本資料,整體準確率僅僅達到62%,在其中34條碰撞聲資料中,分類器正確識別到17條資料,識別準確率僅僅達到50%。在其中16條鳴笛聲中資料中,分類器正確識別到14條資料,準確率能達到87.5%。

從本次實驗結果來看,knn+mfcc組合的聲音識別演算法對汽車碰撞聲的識別準確率僅僅達到50%,其分類效果並不好,但是對汽車鳴笛聲的識別率能達到87.5%,在可以接受的範圍內。

本次實驗有多處不足之處,

(1) 實驗中對每一段聲音頻號僅僅隨機選取了十幀的特徵來做為訓練和識別的特徵集有待商榷,不能保證十幀的特徵資料能夠表徵聲音頻號的完整特徵。

(2) 實驗中knn演算法訓練集資料集過少,每個標籤僅僅選取十個樣本資料。訓練樣本資料集過少會降低knn演算法的識別準確率。

(3) 實驗資料僅僅選取兩種聲音頻號,不足以說明分類器適用性。

基於python的kNN分類演算法

knn演算法的核心思想是如果乙個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的乙個或者幾個樣本的類別來決定待分樣本所屬的類別。knn方法在類別決策時,只與極少量的相鄰樣本有關。由於knn方法主要靠周...

資料分類KNN演算法

監督就是給的樣本都有標籤,分類的訓練樣本必須有標籤,所以分類演算法都是有監督演算法。監督機器學習無非就是 minimize your error while regularizing your parameters 也就是在規則化引數的同時最小化誤差。最小化誤差是為了讓我們的訓練資料,而規則化引數是...

資料探勘 分類演算法 KNN

knn k nearest neighbors k近鄰分類演算法 knn演算法從訓練集中找到和新資料最接近的k條記錄,然後根據他們的主要分類來決定新資料的類別。knn分類演算法是資料探勘分類技術中最簡單的方法之一。所謂k最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表...