⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 breast_cancer_wisconsin_radom.m

📁 使用高斯模型对威斯康辛州大学医学院长期乳腺癌数据进行了贝叶斯模式识别。识别率为95以上
💻 M
字号:
clear;
load data.mat
load ID.mat
Total  = length(data(:,1));
VaribleNumber = length(data(1,:));
Index = [1:Total];


[TestMatrix,TrainMatrix,TestIndex,TrainIndex] = SplitMatrixRandom(data);
TrainNumber = length(TrainIndex);
TestNumber = Total - TrainNumber;

Answer = strcmp(textdata(1:Total,2),'B');

TrainNumber_B =  sum(Answer(TrainIndex));
TrainNumber_M = TrainNumber - TrainNumber_B;
P_B = TrainNumber_B / TrainNumber;
P_M = TrainNumber_M / TrainNumber;

Train_B_Matrix = TrainMatrix(Answer(TrainIndex) == 1,:);
Train_M_Matrix = TrainMatrix(Answer(TrainIndex) == 0,:);

B_MeanMatrix = mean(Train_B_Matrix);
M_MeanMatrix = mean(Train_M_Matrix);
B_ConvarianceMatrix = cov(Train_B_Matrix);
M_ConvarianceMatrix = cov(Train_M_Matrix);

%zero-one loss function
TestCondition_B = zeros(TestNumber,1);
invB_ConvarianceMatrix = inv(B_ConvarianceMatrix);
detB_ConvarianceMatrix = sqrt(det(B_ConvarianceMatrix));

TestCondition_M = zeros(TestNumber,1);
invM_ConvarianceMatrix = inv(M_ConvarianceMatrix);
detM_ConvarianceMatrix = sqrt(det(M_ConvarianceMatrix));
pi2 = (2*pi)^(VaribleNumber/2);

for i = 1:TestNumber
    TestCondition_B(i,1) = exp(-.5*(TestMatrix(i,:)-B_MeanMatrix)*invB_ConvarianceMatrix*(TestMatrix(i,:)-B_MeanMatrix)')/detB_ConvarianceMatrix/pi2;
end
for i = 1:TestNumber
    TestCondition_M(i,1) = exp(-.5*(TestMatrix(i,:)-M_MeanMatrix)*invM_ConvarianceMatrix*(TestMatrix(i,:)-M_MeanMatrix)')/detM_ConvarianceMatrix/pi2;
end

Result = zeros(TestNumber,1);
ConfusionMatrix =zeros(2,2);
Result(find(TestCondition_B ./ TestCondition_M * P_B / P_M > 1)) = 1;
ConfusionMatrix(1,1) = sum(and((Result == ones(TestNumber,1)) , (Answer(TestIndex,1) == ones(TestNumber,1))));
ConfusionMatrix(1,2) = sum(and((Result == zeros(TestNumber,1)) , (Answer(TestIndex,1) == ones(TestNumber,1))));
ConfusionMatrix(2,1) = sum(and((Result == ones(TestNumber,1)) , (Answer(TestIndex,1) == zeros(TestNumber,1))));
ConfusionMatrix(2,2) = sum(and((Result == zeros(TestNumber,1)) , (Answer(TestIndex,1) == zeros(TestNumber,1))));
ConfusionMatrix
performance = sum((Result == Answer(TestIndex,1))) / TestNumber


%%%%%%%%%%%%%%%%%%%%
tmp = TrainIndex;
TrainIndex = TestIndex;
TestIndex = tmp;
tmp = TrainMatrix;
TrainMatrix = TestMatrix;
TestMatrix = tmp;
tmp = TrainNumber;
TrainNumber = TestNumber;
TestNumber = tmp;

TrainNumber_B =  sum(Answer(TrainIndex));
TrainNumber_M = TrainNumber - TrainNumber_B;
P_B = TrainNumber_B / TrainNumber;
P_M = TrainNumber_M / TrainNumber;

Train_B_Matrix = TrainMatrix(Answer(TrainIndex) == 1,:);
Train_M_Matrix = TrainMatrix(Answer(TrainIndex) == 0,:);

B_MeanMatrix = mean(Train_B_Matrix);
M_MeanMatrix = mean(Train_M_Matrix);
B_ConvarianceMatrix = cov(Train_B_Matrix);
M_ConvarianceMatrix = cov(Train_M_Matrix);

%zero-one loss function
TestCondition_B = zeros(TestNumber,1);
invB_ConvarianceMatrix = inv(B_ConvarianceMatrix);
detB_ConvarianceMatrix = sqrt(det(B_ConvarianceMatrix));

TestCondition_M = zeros(TestNumber,1);
invM_ConvarianceMatrix = inv(M_ConvarianceMatrix);
detM_ConvarianceMatrix = sqrt(det(M_ConvarianceMatrix));
pi2 = (2*pi)^(VaribleNumber/2);

for i = 1:TestNumber
    TestCondition_B(i,1) = exp(-.5*(TestMatrix(i,:)-B_MeanMatrix)*invB_ConvarianceMatrix*(TestMatrix(i,:)-B_MeanMatrix)')/detB_ConvarianceMatrix/pi2;
end
for i = 1:TestNumber
    TestCondition_M(i,1) = exp(-.5*(TestMatrix(i,:)-M_MeanMatrix)*invM_ConvarianceMatrix*(TestMatrix(i,:)-M_MeanMatrix)')/detM_ConvarianceMatrix/pi2;
end

Result = zeros(TestNumber,1);
ConfusionMatrix =zeros(2,2);
Result(find(TestCondition_B ./ TestCondition_M * P_B / P_M > 1)) = 1;
ConfusionMatrix(1,1) = sum(and((Result == ones(TestNumber,1)) , (Answer(TestIndex,1) == ones(TestNumber,1))));
ConfusionMatrix(1,2) = sum(and((Result == zeros(TestNumber,1)) , (Answer(TestIndex,1) == ones(TestNumber,1))));
ConfusionMatrix(2,1) = sum(and((Result == ones(TestNumber,1)) , (Answer(TestIndex,1) == zeros(TestNumber,1))));
ConfusionMatrix(2,2) = sum(and((Result == zeros(TestNumber,1)) , (Answer(TestIndex,1) == zeros(TestNumber,1))));
ConfusionMatrix
performance = sum((Result == Answer(TestIndex,1))) / TestNumber


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -