资源简介
内含贝叶斯的代码,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实现113478
- zw_支持向量机与朴素贝叶斯算法matl
- svm支持向量机与nbc朴素贝叶斯算法比
- 基于MATLAB的柑橘果实分类图像朴素贝
- 用身高和/或体重数据进行性别分类的
- EM算法--基于贝叶斯
- 贝叶斯网络Matlab源代码
- 贝叶斯网络工具箱MATLAB工具箱
- 贝叶斯压缩感知matlab源代码
- 模式识别4个实验(matlab)
- 可视化贝叶斯网络建模软件GeNIe2.2用户
- genie 2.0贝叶斯网络软件
- BNT_SLP v1.5
- 贝叶斯网络工具箱Matlab工具包
- FullBNT-1.0.4
- 贝叶斯网络建模工具GeNie2.0安装程序
- 贝叶斯图像处理matlab程序
- 贝叶斯分类器的matlab实现及案例
- 贝叶斯压缩感知matlab函数包
- MATLAB贝叶斯网络工具箱174646
- seksgui v1.0.3
- 机器学习课程设计《基于朴素贝叶斯
- Matlab基于贝叶斯,朴素贝叶斯,最小
- MATLAB贝叶斯网络工具箱FullBNT-1.0.7
- 贝叶斯抠图算法matlab实现
- matlab贝叶斯网络工具箱
- 贝叶斯抠图.zip
- kuaisu稀疏贝叶斯
- 稀疏贝叶斯模型相关向量机
评论
共有 条评论