2.依据最小风险的贝叶斯决策对观察的结果进行分类MATLAB程序代码

一、题目:

>【题目】:假定某个局部区域细胞识别中正常P(w1)和非正常P(w2)两类先验概率分别为:
正常状态:P(w1) =0.9;异常状态:P(W2)=0.1。


现有一系列待观察的细胞,其观察值为:-2.67 -3.55 -1.24 -0.98 -0.79 -2.85 -2.76 -3.73 -3.54 -2.27 -3.45 -3.08 -1.58 -1.49 -0.74 -0.42 -1.12 4.25 -3.99 2.88 -0.98 0.79 1.19 3.07
两类的类条件概率符合正态分布,分别为p(x/w1)=(-2,1.5),p(x|w2)=(2,2)。风险决策表为:λ12=7,λ21=2,λ11=λ22=0。

1)依据最小错误率的贝叶斯决策对观察的结果进行分类。
2)依据最小风险的贝叶斯决策对观察的结果进行分类。

​​​​​​​

二、Matlab代码:

%1.导入数据
clc
clear
 x=[-2.67 -3.55 -1.24 -0.98 -0.79 -2.85 -2.76 -3.73 
     -3.54 -2.27 -3.45 -3.08 -1.58 -1.49 -0.74 -0.42
     -1.12 4.25 -3.99 2.88 -0.98 0.79 1.19 3.07]%导入数据
%2.计算数据的后验概率
 pxw1=normpdf(x,-2,1.5)%计算每个数据在第一类的类条件概率
 pxw2=normpdf(x,2,2)%计算每个数据在第二类的类条件概率
 pw1=0.9;pw2=0.1;
 px=(pxw1*pw1+pxw2*pw2)
 pwx1=pxw1*pw1./px%计算数据属于第一类的后验概率
 pwx2=1-pwx1%计算数据属于第二类的后验概率
 %3.基于最小错误率进行分类决策
 R=zeros(1,24);%建立初始分类矩阵 1x24的全零阵
 for i=1:24
if pwx1(i)>pwx2(i)%如果第i个数据属于第一类的后验概率大于第二类
   R(i)=1;%该数据属于第一类,分类矩阵中该数据所对应的位置置为1
else
   R(i)=2; %该数据属于第二类,分类矩阵中该数据所对应的位置置为2
end
   i=i+1;
 end
%4.显示最小错误率的分类结果
display('基于最小错误率的贝叶斯分类结果:');
display('1表示该点属于第一类,2表示该点属于第二类');
R%显示分类矩阵,其中1表示第一类,2表示第二类


%5.分别计算各数据属于第一类和第二类的条件风险
loss11=0;loss12=7;loss21=2;loss22=0;
R1=loss11*pwx1+loss12*pwx2%属于第-类的条件风险
R2=loss21*pwx1+loss22*pwx2%属于第二类的条件风险
%6.基于最小风险进行决策
Y=zeros(1,24);%建立初始分类矩阵
for i=1:24
if R1(i)<R2(i)
   Y(i)=1;
else
   Y(i)=2;
end
   i=i+1;
end
%7.显示基于最小风险的分类结果
display('基于最小风险的贝叶斯分类结果:');
display('1表示该点属于第一类,2表示该点属于第二类');
Y%显示分类矩阵,其中1表示第一类,2表示第二类



  

三、运行结果:

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
最小风险贝叶斯分类是一种分类算法,它考虑了分类错误所带来的不同风险。在这种算法中,我们需要计算每个类别被分类为真实类别和其他类别的风险值,然后选择最小风险的类别作为预测结果。 下面是使用MATLAB实现最小风险贝叶斯分类的步骤: 1. 加载数据集并将其拆分为训练集和测试集。 2. 计算训练集中每个类别的先验概率。 3. 对于每个特征,计算每个类别中的均值和标准差。 4. 使用贝叶斯公式计算后验概率。 5. 对于测试集中的每个样本,计算每个类别的风险值并选择最小风险的类别作为预测结果。 下面是MATLAB代码示例: ```matlab % 加载数据集 load fisheriris % 将数据集分为训练集和测试集 train_idx = [1:40, 51:90, 101:140]; test_idx = [41:50, 91:100, 141:150]; train_data = meas(train_idx,:); train_labels = species(train_idx); test_data = meas(test_idx,:); test_labels = species(test_idx); % 计算每个类别的先验概率 prior_setosa = sum(strcmp(train_labels, 'setosa')) / length(train_labels); prior_versicolor = sum(strcmp(train_labels, 'versicolor')) / length(train_labels); prior_virginica = sum(strcmp(train_labels, 'virginica')) / length(train_labels); % 计算每个类别中每个特征的均值和标准差 mean_setosa = mean(train_data(strcmp(train_labels, 'setosa'), :)); std_setosa = std(train_data(strcmp(train_labels, 'setosa'), :)); mean_versicolor = mean(train_data(strcmp(train_labels, 'versicolor'), :)); std_versicolor = std(train_data(strcmp(train_labels, 'versicolor'), :)); mean_virginica = mean(train_data(strcmp(train_labels, 'virginica'), :)); std_virginica = std(train_data(strcmp(train_labels, 'virginica'), :)); % 计算每个类别的后验概率 posterior_setosa = normpdf(test_data, mean_setosa, std_setosa); posterior_versicolor = normpdf(test_data, mean_versicolor, std_versicolor); posterior_virginica = normpdf(test_data, mean_virginica, std_virginica); % 计算每个样本在每个类别下的风险值 risk_setosa = posterior_versicolor .* 1 + posterior_virginica .* 1; risk_versicolor = posterior_setosa .* 1 + posterior_virginica .* 1; risk_virginica = posterior_setosa .* 1 + posterior_versicolor .* 1; % 选择最小风险的类别作为预测结果 [~, idx] = min([risk_setosa, risk_versicolor, risk_virginica], [], 2); predictions = cell(length(idx), 1); predictions(idx == 1) = {'setosa'}; predictions(idx == 2) = {'versicolor'}; predictions(idx == 3) = {'virginica'}; % 计算分类准确率 accuracy = sum(strcmp(predictions, test_labels)) / length(test_labels); disp(['分类准确率为:' num2str(accuracy)]); ``` 在上面的代码中,我们使用了MATLAB的`normpdf`函数来计算正态分布的概率密度函数,这个函数可以帮助我们计算后验概率。我们还使用了MATLAB的`strcmp`函数来比较标签值。 注意,在实际应用中,我们需要根据实际情况来选择风险值。上面的示例中,我们将分类错误的风险值设置为1,这是一个比较简单的情况。在实际应用中,我们可能需要根据不同的应用场景来选择不同的风险值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楚歌again

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值