资源简介
利用bayes分类器对mnist数据集或者cafir10进行二分类以及十分类,分类准确率达到95%以上。代码采用matlab编写,且包含mnist数据集,不用修改即可运行。
代码片段和文件信息
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%author: bin_chen
%%date: 2017-10-6
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% download data
clear;
% mnist
images = loadMNISTImages(‘train-images.idx3-ubyte‘);
labels = loadMNISTLabels(‘train-labels.idx1-ubyte‘);
% cifar10
% cifar_train_data1=load(‘cifar-10-matlab/data_batch_1‘);
% cifar_train_data2=load(‘cifar-10-matlab/data_batch_2‘);
% cifar_train_data3=load(‘cifar-10-matlab/data_batch_3‘);
% cifar_train_data4=load(‘cifar-10-matlab/data_batch_4‘);
% cifar_train_data5=load(‘cifar-10-matlab/data_batch_5‘);
%
% images1=double(cifar_train_data1.data);
% images2=double(cifar_train_data2.data);
% images3=double(cifar_train_data3.data);
% images4=double(cifar_train_data4.data);
% images5=double(cifar_train_data5.data);
% images=[images1;images2;images3;images4;images5]‘;
% labels1=(cifar_train_data1.labels);
% labels2=(cifar_train_data2.labels);
% labels3=(cifar_train_data3.labels);
% labels4=(cifar_train_data4.labels);
% labels5=(cifar_train_data5.labels);
% labels=double([labels1;labels2;labels3;labels4;labels5]);
% image_mean=mean(images);
% images=images-repmat(image_meansize(images1)1);
% images = V_pca‘ * images; %降维后的训练数据
%% normalize(正则化)
L2 = sum(images.^2).^0.5; %每个样本特征值的二范距离
L2n = repmat(L2size(images1)1);
images=images./L2n;
clear L2;
clear L2n;
%% PCA dimensionality reduction
C = double(images * images‘);
[V D] = eig(C); % V:特征向量 D:特征值构成的对角矩阵
D=diag(D);
% D = (fliplr(diag(D)‘))‘;
D = cumsum(D) / sum(D); %最后一个元素为1
k = find(D >= 1e-2 1); % 忽略1%的能量
V_pca = V(: k:end); % 保留部分特征
clear C;
clear D;
clear V;
images = V_pca‘ * images;
%% training part
img_i={};
priori_i=zeros(101); % 先验概率
u_i=zeros(size(images1)10); % 平均值
sigma_i=zeros(size(images1)size(images1)10); % 每一类的协方差矩阵
sigma=zeros(size(images1)); % 整体协方差矩阵
for i=0:9
[loc~]=find(labels==i);
img_i{i+1}=images(:loc);
priori_i(i+1)=size(img_i{i+1}2)/size(images2); %先验概率
u_i(:i+1)=mean(img_i{i+1}2); %第i类特征的均值
x_u=img_i{i+1}-repmat(u_i(:i+1)[1size(img_i{i+1}2)]); %特征值-平均值
% 每一类的协方差矩阵
sigma_i(::i+1)=x_u*x_u‘/size(img_i{i+1}2)+0.001*eye(size(images1)); %加扰动,防止奇异
% 整体协方差矩阵
sigma=sigma+x_u*x_u‘;
end
sigma=sigma/size(images2)+0.001*eye(size(images1));
%% test part
test_images = loadMNISTImages(‘t10k-images.idx3-ubyte‘);
test_labels = loadMNISTLabels(‘t10k-labels.idx1-ubyte‘);
% cifar_test_data=load([‘cifar-10-matlab\‘ ‘test_batch.mat‘]);
% test_images=double(cifar_test_data.data);
% test_images=test_images‘;
% test_labels=double(cifar_test_data.labels);
test_images = V_pca‘ * test_images; % 与训练数据按照同样的方式进行降维
% normalize
l2=sum(test_images
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4434 2017-10-10 13:38 bayes分类器\bayes_10_cla.m
文件 3516 2017-10-10 13:37 bayes分类器\bayes_2_cla.m
文件 811 2011-04-27 23:02 bayes分类器\loadMNISTImages.m
文件 516 2011-04-25 17:32 bayes分类器\loadMNISTLabels.m
文件 7840016 1998-01-26 23:07 bayes分类器\t10k-images.idx3-ubyte
文件 10008 1998-01-26 23:07 bayes分类器\t10k-labels.idx1-ubyte
文件 47040016 1996-11-18 23:36 bayes分类器\train-images.idx3-ubyte
文件 60008 1996-11-18 23:36 bayes分类器\train-labels.idx1-ubyte
目录 0 2017-12-04 01:18 bayes分类器
----------- --------- ---------- ----- ----
54959325 9
- 上一篇:数字与图像处理matlab课程设计
- 下一篇:一个通信抗干扰仿真MATLAB代码
相关资源
- 一个通信抗干扰仿真MATLAB代码
- 数字与图像处理matlab课程设计
- Matlab科学计算与可视化仿真宝典-源码
- Introduction to MATLAB
- MATLAB精彩编程100例
- MATLAB SIFT 代码
- matlab 2014b_x64 破解 mcc真正可用
- 5G Development with MATLAB
- 04-图像复原MATLAB
- 点云的三维重建代码,内容丰富matl
- matlab自动代码生成
- 《MATLAB高效编程技巧与应用的25个案例
- MATLAB模拟的电磁学数值技术
- 视频镜头分割及关键帧提取MATLAB
- 小波变换法图像融合MATLAB代码
- petri net matlab simulation
- SVM-KM Matlab源程序
- Matlab 气象图绘制
- 通信原理MATLAB仿真教程电子教案
- 基于相位谱视觉注意机制matlab代码
- matlab实用中文手册带书签
- 16QAM调制与解调仿真代码
- sift特征的Matlab提取
- RBM代码实现MATLAB
- ECG Viewer
- 精通Matlab6.5版电子书
- ANFIS自适应模糊推理算法Matlab设计
- MATLAB GUI图像处理.zip
- 基于MATLAB的系统分析与设计——信号
- matlab 基础及应用教程
评论
共有 条评论