资源简介
内含贝叶斯的代码,10次10折贝叶斯的代码,直接使用即可,还用相应的数据集样本,都可直接使用不需要修改。
代码片段和文件信息
clear;
clc;
ex=importdata(‘test.txt‘); %读入文件
X=ex.data;
[mn]=size(ex.textdata); %数据大小
Y=zeros(m);
for i=1:m
if strcmp(ex.textdata(i)‘L‘)==1
Y(i)=1;
elseif strcmp(ex.textdata(i)‘B‘)==1
Y(i)=2;
else Y(i)=3;
end
end
%朴素贝叶斯算法实现分类问题(三类y=1y=2y=3)
%我们把所有数字序号末尾为1的留作测试集,其他未训练集
% m=625; %样本总数
% m1=562; %训练集样本数量
% m2=63; %测试集样本数量
%10折10次交叉验证
indices = crossvalind(‘Kfold‘m10); %产生10个fold,即indices里有等比例的1-10
accuracy = 0;
for i=1:10
test=(indices==i); %逻辑判断,每次循环选取一个fold作为测试集
train=~test; %取test的补集作为训练集,即剩下的9个fold
data_train=X(train:); %以上得到的数都为逻辑值,用与样本集的选取
label_train=Y(train:); %label为样本类别标签,同样选取相应的训练集
data_test=X(test:); %同理选取测试集的样本和标签
label_test=Y(test:);
[l1l3] = size(label_train);
[l2l4] = size(label_test);
%三类样本数量分别记为count1count2count3
count1=0;
count2=0;
count3=0;
%count_1(ij)表示在第一类(y=1)的情况下,第i个属性是j的样本个数
count_1=zeros(45);
%count_2(ij)表示在第二类(y=2)的情况下,第i个属性是j的样本个数
count_2=zeros(45);
%count_3(ij)表示在第三类(y=3)的情况下,第i个属性是j的样本个数
count_3=zeros(45);
ii=1;%用来标识测试集的序号
for i=1:l1
x=data_train(i:);
if label_train(i)==1
count1=count1+1;
for j=1:4 %指示第j个属性
for k=1:5 %第j个属性为哪个值
if x(j)==k
count_1(jk)=count_1(jk)+1;
break;
end
end
end
elseif label_train(i)==2
count2=count2+1;
for j=1:4 %指示第j个属性
for k=1:5 %第j个属性为哪个值
if x(j)==k
count_2(jk)=count_2(jk)+1;
break;
end
end
end
else
count3=count3+1;
for j=1:4 %指示第j个属性
for k=1:5 %第j个属性为哪个值
if x(j)==k
count_3(jk)=count_3(jk)+1;
break;
end
end
end
end
%分别计算三类概率y1=p(y=1)、y2=p(y=2)、y3=p(y=3)的估计值
y1=count1/l1;
y2=count2/l1;
y3=count3/l1;
%y_1(ij)表示在第一类(y=1)的情况下,第i个属性取值为j的概率估计值
%y_2(ij)表示在第二类(y=2)的情况下,第i个属性取值为j的概率估计值
%y_3(ij)表示在第三类(y=3)的情况下,第i个属性取值为j的概率估计值
for i=1:4
for j=1:5
y_1(ij)=count_1(ij)/count1;
y_2(ij)=count_2(ij)/count2;
y_3(ij)=count_3(ij)/count3;
end
end
end
%做预测p1p2p3分别表示输入值xx为第1,2,3类的概率
cc=0; %用cc表示正确分类的样本
for i=1:l2
xx=data_test(i:);
yy=label_test(i);
p1=y1*y_1(1xx(1))*y_1(2xx(2))*y_1(3xx(3))*y_1
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4149 2018-06-06 19:44 matlab贝叶斯分类(2)-10折10次交叉验证\Copy_of_beys.m
文件 6873 2018-06-06 17:21 matlab贝叶斯分类(2)-10折10次交叉验证\test.txt
目录 0 2019-11-02 09:49 matlab贝叶斯分类(2)-10折10次交叉验证\
- 上一篇:电压暂降的均方根曲线绘制
- 下一篇:lempel-ziv.m
相关资源
- 最简单的贝叶斯分类器演示Matlab程序
- 最大似然估计和贝叶斯参数估计
- 正态分布模式下的贝叶斯分类
- 贝叶斯最小错误分类器 matlab
- 信号检测贝叶斯
- matlab基于贝叶斯的手写输入数字识别
- 朴素贝叶斯算法matlab实现
- MATLAB代码最小风险贝叶斯决策
- matlab贝叶斯分类(3)-UCI数据集通用分
- Matlab贝叶斯分类器 (Bayers)程序
- 朴素贝叶斯算法matlab代码实现
- 基于最小错误率的Bayes分类器的MATLA
- 朴素贝叶斯分类matlab实现
- matlab贝叶斯源码iris分类
- 贝叶斯估计方法的matlab程序
- matlab-朴素贝叶斯-鸢尾花数据集
- 贝叶斯分类Matlab代码
- 模式识别matlab:最小错误率、最小风
- 基于贝叶斯算法的图像像素分割
- 朴素贝叶斯算法在matlab中实现
- 贝叶斯判别法的MATLAB实现
- adaboost 演示demo基于Matlab,学习算法包
- 模式识别的几个经典分类器,附matl
- 用matlab贝叶斯方法实现神经网络算法
- 正态分布模式的贝叶斯分类
- 贝叶斯网络(BNT)结构和参数的学习
- 贝叶斯分类算法MatLab实现
- 稀疏贝叶斯学习算法SBL-FM算法
- 基于贝叶斯的图像分割(MATLAB源码和
- 贝叶斯参数估计 matlab
评论
共有 条评论