• 大小: 10.16MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-17
  • 语言: Matlab
  • 标签: KNN  MNIST  matlab  

资源简介

代码使用matlab编写,压缩包中包含MNIST数据集及其读取函数、KNN算法实现和ReadMe.txt。 KNN算法中使用了PCA降维处理数据减少运行时间,正确率可达95%,有部分注释。请结合ReadMe文件使用。

资源截图

代码片段和文件信息

clear;
clc;
%读取数据
trainImages = loadMNISTImages(‘train-images.idx3-ubyte‘);      
trainLabels = loadMNISTLabels(‘train-labels.idx1-ubyte‘);
testImages = loadMNISTImages(‘t10k-images.idx3-ubyte‘);
testLabels = loadMNISTLabels(‘t10k-labels.idx1-ubyte‘);
%选取部分样本进行测试
testImages = testImages(:1:100);
testLabels = testLabels(1:1001);
%PCA降维
square = double(trainImages * trainImages‘);
[eigVect eigVal] = eig(square);
eigVal = diag(eigVal);  
eigVal = cumsum(eigVal) / sum(eigVal);
k = find(eigVal >= 5e-2 1);
pca = eigVect(: k:end);
trainImages = pca‘ * trainImages;
testImages = pca‘ * testImages; 
%获得样本规模
[mn] = size(trainImages);
[rs] = size(testImages);

K = 10;                                                        %K最好取20以下的数
testResults = zeros(1s);
kLabels = zeros(1K);
error =0;
%开始训练
tic;
for i = 1 : s
    %求出待测样本与训练样本的距离
    colImages = repmat(testImages(:i)1n); 
    colImages = (trainImages - colImages) .^ 2;
    distance = sum(colImages) .^ 0.5;
    %找到离待测样本最近的k个训练样本
    [sortDistpos1] = sort(distance);
    for j = 1 : K
        kLabels(j) = trainLabels(pos1(j));
    end
    %训练样本进行投票得到待测样本的类别
    count = tabulate(kLabels);
    [maxCountpos2] = max(count(:2));
    testResults(i) = count(pos2);  
    fprintf(‘第%d张图片\n‘i);
end
%判断训练结果
for i = 1 : s
  if (testResults(i) ~= testLabels(i))
    error = error+1;
  end
end

fprintf(‘正确率为%d\n‘1-error/s);
toc;

% save data error;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1559  2017-11-14 19:36  matlab\KNN.m

     文件        837  2017-11-07 16:51  matlab\loadMNISTImages.m

     文件        535  2017-11-03 17:49  matlab\loadMNISTLabels.m

     文件        259  2017-11-13 17:13  matlab\Readme.txt

     文件    7840016  1998-01-26 23:07  matlab\t10k-images.idx3-ubyte

     文件      10008  1998-01-26 23:07  matlab\t10k-labels.idx1-ubyte

     文件   47040016  1996-11-18 23:36  matlab\train-images.idx3-ubyte

     文件      60008  1996-11-18 23:36  matlab\train-labels.idx1-ubyte

     目录          0  2017-11-13 17:02  matlab

----------- ---------  ---------- -----  ----

             54953238                    9


评论

共有 条评论