Hello Mat

 找回密码
 立即注册
查看: 7866|回复: 0

最小距离分类器

[复制链接]

1323

主题

1551

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22647
发表于 2017-2-4 21:03:21 | 显示全部楼层 |阅读模式
贝叶斯分类器可由下列假设进行简化处理:
(1)分类类别是等概率事件的;
(2)分类数据服从高斯分布;
(3)对于所有类别而言,协方差矩阵是相同的;
(4)协方差矩阵式对角阵,且对角元素相等,协方差矩阵S=delta*delta*I ,I为单位矩阵。
基于以上四条假设,贝叶斯分类器等效于欧氏距离分类器,对于待分类的x,分类到wi 需满足:
||x-mi|| = sqrt(  (x-mi)* (x-mi) ) < ||x-mj|| ,  任意的 i != j

欧氏距离分类器函数如下:
  1. function [z]=euclidean_classifier(m,X)
  2. %实现欧式距离分类器设计
  3. % 输入:
  4. %   m:  列向量,均值向量,每一列表示待分类数据的均值向量
  5. %   X:  每一列表示待分类的数据
  6. %输出:
  7. %   z:  输出属于哪一类的标签
  8. %
  9. [l,c]=size(m);                             % 维数
  10. [l,N]=size(X);                             % 维数

  11. for i=1:N
  12.     for j=1:c
  13.         de(j)=sqrt((X(:,i)-m(:,j))'*(X(:,i)-m(:,j)));          % 欧氏距离
  14.     end
  15.     [num,z(i)]=min(de);                                            % 最小距离
  16. end
复制代码


     如果对贝叶斯分类器做前三条假设,也就是去掉“假设(4协方差矩阵式对角阵,且对角元素相等,协方差矩阵S=delta*delta*I ,I为单位矩阵。”,那么贝叶斯分类器等价于马氏距离分类器,对于待分类的x分类到wi 需满足:
sqrt(  (x-mi) / S (x-mi) ) <sqrt(  (x-mj) / S (x-mj) ),  任意的 i != j

马氏距离分类器函数如下:
  1. function z=mahalanobis_classifier(m,S,X)
  2. % 实现马氏距离分类器设计
  3. % 输入:
  4. %   m:  列向量,均值向量,每一列表示待分类数据的均值向量
  5. %   S:  方阵,协方差矩阵
  6. %   X:  每一列是待分类的数据
  7. %输出:
  8. %   z:  输出属于哪一类的标签
  9. [l,c]=size(m);                                   % 维数
  10. [l,N]=size(X);                                   % 维数

  11. for i=1:N
  12.     for j=1:c
  13.         dm(j)=sqrt((X(:,i)-m(:,j))'*inv(S)*(X(:,i)-m(:,j)));                  % 马氏距离计算
  14.     end
  15.     [num,z(i)]=min(dm);                          % 最小距离
  16. end
复制代码

例如主程序如下:
  1. clc,clear,close all                    % 清屏、清工作区、关闭窗口
  2. warning off                         % 消除警告
  3. feature jit off                       % 加速代码执行
  4. % 马氏距离分类器
  5. x=[0.1 0.5 0.1]';                                   % 初始化
  6. m1=[0 0 0]';                                     % 初始化
  7. m2=[0.5 0.5 0.5]';                                 % 初始化
  8. m=[m1 m2];
  9. S=[0.8 0.01 0.01;
  10.    0.01 0.2 0.01;
  11.    0.01 0.01 0.2];
  12. z=mahalanobis_classifier(m,S,x)  % 马氏距离分类
复制代码









算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-11-22 17:10 , Processed in 0.229147 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表