模式識別的幾種基本演算法

listwebit發表於2015-06-10

           本學期選了模式識別的課程,該期末考試了, 將本課程的幾種基本演算法整理一下。

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)決策規則:


相關文章