Matlab实现手写数字识别(PCA+KNN)

Matlab实现⼿写数字识别(PCA+KNN)
</pre><pre name="code" class="plain">clear;
addpath('../data/');
% images_train = loadMNISTImages('train-images-idx3-ubyte')';
开心网001images_train_label=loadMNISTLabels('train-labels-idx1-ubyte');
% save('../data/images_train_label.mat','images_train_label');
% images_test=loadMNISTImages('t10k-images-idx3-ubyte')';
images_test_label=loadMNISTLabels('t10k-labels-idx1-ubyte');
% [pc,score,latent,tsquare] = princomp(images_train);
% p_d_ratio=cumsum(latent)./sum(latent);
% p_mean=mean(images_train);
% p_d=87; % 90%
马明龙
% train_pca=score(:,1:p_d);
% save('../data/train_pca.mat','train_pca');养护机械
load('../data/train_pca.mat');
% for i=1:10000
%    test_pca(i,:)=(images_test(i,:)-p_mean)*pc(:,1:p_d);
% end
% save('../data/test_pca.mat','test_pca');
load('../data/test_pca.mat');
mdl = ClassificationKNN.fit(train_pca,images_train_label,'NumNeighbors',1);
predict_label_knn=predict(mdl, test_pca);
accuracy_knn=length(find(predict_label_knn == images_test_label))/length(images_test_label)*100;  </span>
PCA介绍很详细的资料:
Matlab PCA的函数:[COEFF,SCORE,latent,tsquare] = princomp(X)
银河宽频
COEFF为输⼊X在原空间到主成份空间的变换过程,SCORE为X在主成份空间的表⽰,latent为每个X协⽅差矩阵特征值所占的⽐重,ts不了解。
前P个latent值超过90%即可选取前⾯的特征代替整体,达到降维。
此函数中X为N*K矩阵,N个数据,K个特征,有SCORE=(X-mean(X))*COEFF。
值得注意的时在测试数据降维时,要先减去训练数据的均值。
在计算⾃相关矩阵时训练数据进⾏归⼀化,本次的样本数据之前均已归⼀化。
这次只⽤到了分类,不需要重构,重构还需要⽤到K-L变换等知识。
K-NN⾮常适合这个分类器,原理也很简单,准确率97%。
计算机学报
质粒转染
另外我将之前LBP+SVM的过程⽤PCA代替LBP,发现准确率由68%上升到87%,果然之前想的没错,特征提取很关键。

本文发布于:2024-09-22 00:50:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/326262.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   代替   训练   空间   特征   重构   降维   达到
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议