MATLAB實現KNN演算法(MNIST資料集)

2021-10-06 04:29:00 字數 1503 閱讀 5195

k-近鄰分類器又稱為 knn 演算法(k nearest neighbors algorithm),它是指需要從訓練集中找出待識別樣本的 k 個最近鄰,然後依據這 k 個最近鄰分別所屬的類別來決定應當把待識別樣本劃分到哪個類別中。

k-近鄰分類器原理簡單,無需對樣本集進行回歸分析或者概率分布統計,實現起來十分方便。

距離度量、k 值的選擇及分類決策規則是 k 近鄰演算法的三個基本要素。

根據選擇的距離度量(如曼哈頓距離或歐氏距離,minkowski 明可夫斯基),可計算測試樣本與訓練集中的每個例項點的距離,根據 k 值選擇 k 個最近鄰點,最後根據分類決策規則將測試例項分類。

knn.m 程式**主要實現了資料集讀入,knn 分類器訓練,測試及結果輸出幾個部分。資料集仍使用之前的mnist資料集。

%knn.m

clc

clear variables

load ('../test_images.mat');

load ('../test_labels.mat');

load ('../train_images.mat');

load ('../train_labels.mat');

% 選取資料容量

train_num = 2000;

test_num = 200;

data_train = mat2vector(train_images(:,:,1:train_num),train_num);% 轉換為行向量

data_test = mat2vector(test_images(:,:,1:test_num),test_num);

% 引數說明:knn要求在乙個範圍內選取近鄰樣本,這個容量需要手動給出

% 其他引數如距離計算模式,距離權重均為預設,如歐式距離,等權值等。

% 具體結果可以在執行後檢視knn_model來詳細觀察

knn_model = fitcknn(data_train,train_labels1(1:train_num),'numneighbors',10);

result = predict(knn_model,data_test);

acc = 0.;

for i = 1:test_num

if result(i)==test_labels1(i)

acc = acc+1;

endendfprintf('精確度為:%5.2f%%\n',(acc/test_num)*100);

k 值的選擇會對 k 近鄰法的結果產生重大影響。在應用中,k 值一般取乙個比較小的數值,通常採用交叉驗證法來選取最優的 k 值。我們可以看一下 k 值的選擇如何影響識別精度。

機器學習 KNN演算法 MATLAB實現

k 近鄰演算法的思想如下 首先,計算新樣本與訓練樣本之間的距離,找到距離最近的k 個鄰居 然後,根據這些鄰居所屬的類別來判定新樣本的類別,如果它們都屬於同乙個類別,那麼新樣本也屬於這個類 否則,對每個後選類別進行評分,按照某種規則確定新樣本的類別。統計出現的頻率 該演算法比較適用於樣本容量比較大的類...

knn演算法實現

knn演算法 自己實現 鳶尾花資料集 一.題目描述 題目 自己實現knn演算法 用鳶尾花資料集 knn演算法描述 在訓練集中資料和標籤已知的情況下,輸入測試資料,將測試資料的特徵與訓練集中對應的特徵進行相互比較,找到訓練集中與之最為相似的前k個資料,則該測試資料對應的類別就是k個資料 現次數最多的那...

KNN演算法實現

knn k 近鄰 knn,k nearestneighbor 演算法是一種基本分類與回歸方法,我們這裡只討論分類問題中的 k 近鄰演算法。k 近鄰演算法的輸入為例項的特徵向量,對應於特徵空間的點 輸出為例項的類別,可以取多類。k 鄰演算法假設給定乙個訓練資料集,其中的例項類別已定。分類時,對新的例項...