本学期选了模式识别的课程,该期末考试了, 将本课程的几种基本算法整理一下。
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)决策规则: