模式識別的幾種基本演算法
本學期選了模式識別的課程,該期末考試了, 將本課程的幾種基本演算法整理一下。
0.最小距離分類判別演算法
(1)定義:是指求出未知類別向量到要識別各類別代表向量中心點的距離,將未知類別向量歸屬於距離最小一類的一種影象分類方法。
(2)用Matlab實現的一個演算法一看就懂了:
clc
clear all
close all
%% 已知樣本特徵向量
%class_w1=[2 2 2 3 3 2.5 1.5 3.5 4 0.5;3 2 4 3 4 3 2 2.5 4 0.5]
%class_w2=[0 -2 -1 1 3 -2 -3 -5 4;2.5 2 -1 -2 0 -2 -4 -2 -1]
class_w1=[2 2 2 3;0 2 4 3]
class_w2=[0 -2 -1 1 3;3 2 -1 -2 -1]
% 在二維平面上繪製兩類點
plot(class_w1(1,:),class_w1(2,:),'r*')
hold on;
plot(class_w2(1,:),class_w2(2,:),'b+')
hold on;
title('蘋果橘子的二維影象')
%找到他們的均值
R_w1 = mean(class_w1')'
R_w2 = mean(class_w2')'
%分別獲取他們的x座標和y座標
R_w1_x=R_w1(1,:)
R_w1_y=R_w1(2,:)
R_w2_x=R_w2(1,:)
R_w2_y=R_w2(2,:)
%求兩點的中點
tall_x=(R_w1_x+R_w2_x)/2
tall_y=(R_w1_y+R_w2_y)/2
%求兩點的斜率
k=(R_w2_y-R_w1_y)/(R_w2_x-R_w1_x);
%求兩點的斜率的負倒數
k=-1*(1/k);
b=tall_y-k*tall_x;
%% 畫分類線 用斜率式求直線
syms x y;
ss=k*x + b-y;
ezplot(ss,[-5,5,-5,5])
axis equal
1.最近鄰演算法
(1)最近鄰演算法:為了判定未知樣本的類別,以全部訓練樣本作為代表點,計算未知樣本與所有訓練樣本的距離,並以最近鄰者的類別作為決策未知樣本類別的唯一依據。
(2)公式表達:對於S類別問題,每類有Ni個樣本,則第i類的識別函式是(i=1,2,…S)
2. KNN演算法
(1)KNN演算法:K-最近鄰演算法是最近鄰演算法的一個延伸。基本思路是:選擇未知樣本一定範圍內確定個數的K個樣本,該K個樣本大多數屬於某一型別,則未知樣本判定為該類 型。
(2)數學表示式:
(3)決策規則: