📄 bayes_iris.m
字号:
clear;
load ('irisdata.mat');
CategoryLabel=CategoryLabel';
ClassAllData=ClassAllData';
class_1=class_1';
class_2=class_2';
class_3=class_3';
sampleNum_1 = size(class_1,2); %样本数目 sampleNum_1,2,3=500
sampleNum_2 = size(class_2,2);
sampleNum_3 = size(class_3,2);
sampleAll = sampleNum_1 + sampleNum_2 + sampleNum_3; %总样本数
prior_1 = sampleNum_1/sampleAll; %计算先验概率
prior_2 = sampleNum_2/sampleAll;
prior_3 = sampleNum_3/sampleAll;
mean_1 = sum(class_1,2)/sampleNum_1; %计算均值P55
mean_2 = sum(class_2,2)/sampleNum_2;
mean_3 = sum(class_3,2)/sampleNum_3;
%mean_1 = mean(class_1,2);
%mean_2 = mean(class_2,2);
%mean_3 = mean(class_3,2);
sigma_1 = (class_1-repmat(mean_1,[1 sampleNum_1]))*(class_1-repmat(mean_1,[1 sampleNum_1]))'/sampleNum_1; %计算方差
sigma_2 = (class_2-repmat(mean_2,[1 sampleNum_2]))*(class_2-repmat(mean_2,[1 sampleNum_2]))'/sampleNum_2;
sigma_3 = (class_3-repmat(mean_3,[1 sampleNum_3]))*(class_3-repmat(mean_3,[1 sampleNum_3]))'/sampleNum_3;
%sigma_1 = cov((class_1)');
%sigma_2 = cov((class_2)');
%sigma_3 = cov((class_3)');
det_sigma_1=det(sigma_1);
det_sigma_2=det(sigma_2);
det_sigma_3=det(sigma_3);
inv_sigma_1=inv(sigma_1);
inv_sigma_2=inv(sigma_2);
inv_sigma_3=inv(sigma_3);
gx = zeros(3,sampleAll);
temp = zeros(150,150);
temp = -0.5*(ClassAllData-repmat(mean_1,[1 sampleAll]))'*inv_sigma_1*(ClassAllData-repmat(mean_1,[1 sampleAll])) ...
-0.5*log(det_sigma_1)+log(prior_1); %判别函数P31(2-88)
gx(1,:) = (diag(temp))';
temp = -0.5*(ClassAllData-repmat(mean_2,[1 sampleAll]))'*inv_sigma_2*(ClassAllData-repmat(mean_2,[1 sampleAll])) ...
-0.5*log(det_sigma_2)+log(prior_2);
gx(2,:) = (diag(temp))';
temp = -0.5*(ClassAllData-repmat(mean_3,[1 sampleAll]))'*inv_sigma_3*(ClassAllData-repmat(mean_3,[1 sampleAll])) ...
-0.5*log(det_sigma_3)+log(prior_3);
gx(3,:) = (diag(temp))';
[max_gx, ClassLabel] = max(gx); %max_gx:判别函数矩阵gx中每一列的最大值 ClassLabel:最大值所在的行
Err_ind = find(CategoryLabel~=ClassLabel); %Err_ind:分类错误的点的编号
errorrate=size(Err_ind,2)/sampleAll; %错误率
disp('错误率为');disp(errorrate);
disp('错误组为');disp(Err_ind)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -