资源简介
代码使用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
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论