资源简介
代码使用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程序——癫痫病人的脑电信号提
- 系统辨识与自适应控制MATLAB仿真1904
- PIV matlab程序
- MATLAB在时间序列分析中的应用_张善文
- matlab利用不变矩提取图片的形状特征
- 滑模变结构控制MATLAB仿真(第1版)(
- UWB_Matlab
- 滑模变结构控制MATLAB仿真刘金锟
- 基于Matlab的指纹图像特征提取
- MATLAB通信技术例程
- 近邻传播聚类算法及matlab API
-
智能汽车 matlabsimuli
nk 模拟仿真技术 - 人脸识别及匹配的matlab实现
- matlab各种数据分析处理模型算法代码
-
BSM1建模指导及Simuli
nk程序 - 定量反馈控制QFTmatlab 工具箱
- matlab神经网络30个案例(文档+源代码
- mupad 教程
- 车牌识别与数据库管理系统
- RTW自动代码生成指导书
- [Matlab作品]matlab实现视频中动态目标跟
- matlab通信系统工具箱
- 各种最小二乘法汇总算例及MATLAB程序
- 一维热传导方程数值解法及matlab实现
-
详解MATLAB/Simuli
nk通信系统建模与仿 - DTI matlab 实现代码
-
50种电力电子基础拓扑Simuli
nk仿真 - LTE系统仿真平台_matlab源码
- 用Matlab将坐标添加到地图上
- 有限体积的MATLAB工具
评论
共有 条评论