朴素贝叶斯
MATLAB代码
clear;
clc;
train=load('heart_dis_training_data.txt');%删除了有?的行 280*14
test=load('heart_dis_test_data.txt');%删除了有?的行 17*14
train=sortrows(train,14);
cnt=0;
for i=1:280
if train(i,14)>0
train(i,14)=1;%患病
else
cnt=cnt+1;
end
end
for i=1:cnt
trainData1(i,:)=train(i,:);
end
t=1;
for i=cnt+1:280
trainData2(t,:)=train(i,:);
t=t+1;
end
mean0=mean(trainData1);
std0=std(trainData1);
mean1=mean(trainData2);
std1=std(trainData2);
rig=0;
for i=1:17
m=log(156/280);
n=log(1-156/280);
for j=1:13
m=log(normpdf(test(i,j),mean0(1,j),std0(1,j)))+m;
n=log(normpdf(test(i,j),mean1(1,j),std1(1,j)))+n;
end
if m>n
val=0;
else
val=1;
end
if test(i,14)>0
test(i,14)=1;
end
if test(i,14)==val
rig=rig+1;
end
end
disp(['正确率:',num2str(rig/17)]);