• 大小: 10.17MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-29
  • 语言: Matlab
  • 标签: bayes分类  matlab  

资源简介

利用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


评论

共有 条评论