欧氏距离分类器的Matlab实现
欧氏距离分类器是贝叶斯分类器的退化版本,在样本满足一定条件下成立。
代码如下:
function cls = mahalanobisClassifier(varargin)
[x,m,sigma] = parseInputs(varargin{:}); %分析输入的变量
dis = zeros(size(m,1),1); %欧氏距离
cls = zeros(size(x,1),1); %每个样本所属的类别
for i = 1:size(x,1) %进行分类
for j = 1:size(m,1)
dis(j) = (x(i,:)-m(j,:))/sigma*(x(i,:)-m(j,:))';
end
[~,cls(i)] = min(dis);
end
function [x,m,sigma] = parseInputs(varargin) %用于分析输入的变量的函数
narginchk(2,inf)
validateattributes(varargin{1},{'numeric'},{'nonempty','nonsparse',...
'2d'})
x = varargin{1};
if nargin == 2
validateattributes(varargin{2},{'numeric'},{'nonempty','nonsparse',...
'2d','ncols',size(x,2)})