Halcom 发表于 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
欧氏距离分类器函数如下:function =euclidean_classifier(m,X)
%实现欧式距离分类器设计
% 输入:
%   m:列向量,均值向量,每一列表示待分类数据的均值向量
%   X:每一列表示待分类的数据
%输出:
%   z:输出属于哪一类的标签
%
=size(m);                           % 维数
=size(X);                           % 维数

for i=1:N
    for j=1:c
      de(j)=sqrt((X(:,i)-m(:,j))'*(X(:,i)-m(:,j)));        % 欧氏距离
    end
    =min(de);                                            % 最小距离
end

   如果对贝叶斯分类器做前三条假设,也就是去掉“假设(4)协方差矩阵式对角阵,且对角元素相等,协方差矩阵S=delta*delta*I ,I为单位矩阵。”,那么贝叶斯分类器等价于马氏距离分类器,对于待分类的x,分类到wi 需满足: sqrt((x-mi) / S (x-mi) ) <sqrt((x-mj) / S (x-mj) ),任意的 i != j
马氏距离分类器函数如下:function z=mahalanobis_classifier(m,S,X)
% 实现马氏距离分类器设计
% 输入:
%   m:列向量,均值向量,每一列表示待分类数据的均值向量
%   S:方阵,协方差矩阵
%   X:每一列是待分类的数据
%输出:
%   z:输出属于哪一类的标签
=size(m);                                   % 维数
=size(X);                                   % 维数

for i=1:N
    for j=1:c
      dm(j)=sqrt((X(:,i)-m(:,j))'*inv(S)*(X(:,i)-m(:,j)));                % 马氏距离计算
    end
    =min(dm);                        % 最小距离
end
例如主程序如下:clc,clear,close all                  % 清屏、清工作区、关闭窗口
warning off                         % 消除警告
feature jit off                     % 加速代码执行
% 马氏距离分类器
x=';                                 % 初始化
m1=';                                     % 初始化
m2=';                                 % 初始化
m=;
S=[0.8 0.01 0.01;
   0.01 0.2 0.01;
   0.01 0.01 0.2];
z=mahalanobis_classifier(m,S,x)% 马氏距离分类









页: [1]
查看完整版本: 最小距离分类器