资源简介
利用matlab实现的贝叶斯分类算法,其中包含数据格式转换算法,交叉验证算法和数据集统计算法,是UCI数据集通用的分类算法,准确率达到0.9427.
代码片段和文件信息
clear;
clc;
%读取数据
% ex=importdata(‘test.txt‘); %读入文件
% X=ex.data;
% [mn]=size(ex.data); %数据大小
%
% 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
[class attrib1 attrib2 attrib3 attrib4] = textread(‘C:\matlab2017b\my-file\beys\test.txt‘‘%s %f %f %f %f‘‘delimiter‘‘‘);
X = [attrib1‘; attrib2‘; attrib3‘; attrib4‘]‘;
[mn] = size(X);
Y = zeros(m 1);
Y(strcmp(class‘L‘)) = 1;
Y(strcmp(class‘B‘)) = 2;
Y(strcmp(class‘R‘)) = 3;
%朴素贝叶斯算法实现分类问题(三类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);
%选取每个属性在每一类中的取值
jj1 = 1;
jj2 = 1;
jj3 = 1;
for p = 1:l1
if label_train(p) == 1
X1(jj1:) = data_train(p:);
jj1 = jj1 + 1;
elseif label_train(p) == 2
X2(jj2:) = data_train(p:);
jj2 = jj2 + 1;
elseif label_train(p) == 3
X3(jj3:) = data_train(p:);
jj3 = jj3 + 1;
end
end
%三类样本数量分别记为count1count2count3
count1=0;
count2=0;
count3=0;
%count_1(ij)表示在第一类(y=1)的情况下,第i个属性是j的样本个数
count_1=zeros(njj1-1);
%count_2(ij)表示在第二类(y=2)的情况下,第i个属性是j的样本个数
count_2=zeros(njj2-1);
%count_3(ij)表示在第三类(y=3)的情况下,第i个属性是j的样本个数
count_3=zeros(njj3-1);
ii=1;%用来标识测试集的序号
for i=1:l1
x=data_train(i:);
if label_train(i)==1
count1=count1+1;
for j=1:n %指示第j个属性
uni1 = unique(X1(:j));
for k=1:length(uni1) %第j个属性为哪个值
if x(j)==uni1(k)
count_1(jk)=count_1(jk)+1;
break;
end
end
end
elseif label_train(i)==2
count2=count2+1;
for j=1:n %指示第j个属性
uni2 = unique(X2(:j));
for k=1:length(uni2) %第j个属性为哪个值
if x(j)==uni2(k)
count_2(jk)=count_2(jk)+1;
break;
end
end
end
else
count3=count3+1;
for j=1:n %指示第j个属性
uni3 = unique(X3(:j));
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-06-07 18:54 matlab贝叶斯分类(3)-UCI数据集通用分类器\
文件 6521 2018-06-07 18:50 matlab贝叶斯分类(3)-UCI数据集通用分类器\Copy_2_of_beys.m
文件 4698 2018-06-06 15:48 matlab贝叶斯分类(3)-UCI数据集通用分类器\iris.txt
文件 6873 2018-06-06 17:21 matlab贝叶斯分类(3)-UCI数据集通用分类器\test.txt
- 上一篇:几种现代谱估计的方法Matlab程序
- 下一篇:BP神经网络多分类
相关资源
- 几种现代谱估计的方法Matlab程序
- 分数延迟FIR滤波器Matlab程序
- SC-FDMA matlab
- 计算电磁学王秉中矩形波导基膜和第
- 并网仿真模型matlab
- AGC 自动增益控制 含matlab和c两种
- 用双线性变换法设计一个巴特沃斯低
- 基于Matlab的DMC算法仿真研究
- 单纯形算法的matlab实现
- 牛顿法,阻尼牛顿法和改进的阻尼牛
- 用于实现图像去雾的代码,很有效,
- 模拟ECG心电信号数据matlab
- 灰度形态学处理matlab代码
- matlab MK检验代码
- matlab生成地球格点面积mask
- 微电网负荷预测matlab源代码
- SimpleCalculator
- 超宽带信号发送、传输、接收的matl
- 数字图像处理第二版MatLab代码大全
- 用BP人工神经网络预测人口代码matla
- MATLAB模拟篮球比赛常规赛、季后赛对
- 基于MATLAB的阵列信号处理仿真方法
- MATLAB Code.rar.rar
- 脉冲雷达测速测距的matlab程序.rar
- 基于SVM(支持向量机) 的人脸识别
- VMD分解变分模态分解
- 粒子群优化算法演示及matlab源程序
- 禁忌算法matlab源程序
- 欠定盲源分离经典程序
- Criminisi图像修复
评论
共有 条评论