資源簡介
matlab PCA的m文件。數(shù)據(jù)集Iris是常用的分類實驗數(shù)據(jù)集,由Fisher, 1936收集整理。 CSDN上原來有一個arff格式的鳶尾花數(shù)據(jù)集,不方便matlab直接調(diào)用。 我的這個數(shù)據(jù)集是txt格式的,在matlab下可以直接一句命令“l(fā)oad('iris.txt')”加載。 iris以鳶尾花的特征作為數(shù)據(jù)來源,常用在分類操作中。該數(shù)據(jù)集由3種不同類型的鳶尾花的50個樣本數(shù)據(jù)構(gòu)成。其中的一個種類與另外兩個種類是線性可分離的,后兩個種類是非線性可分離的。 該數(shù)據(jù)集包含了5個屬性: & Sepal.Length(花萼長度),單位是cm; & Sepal.Width(花萼寬度),單位是cm; & Petal.Length(花瓣長度),單位是cm; & Petal.Width(花瓣寬度),單位是cm; & 種類:Iris Setosa(山鳶尾)、Iris Versicolour(雜色鳶尾),以及Iris Virginica(維吉尼亞鳶尾
代碼片段和文件信息
%?data?loading
clear;?clc;
[a1?a2?a3?a4?lab]?=?textread(‘iris.txt‘‘%f%f%f%f%s‘‘delimiter‘?‘‘);
X?=?[a1‘;?a2‘;?a3‘;?a4‘]‘;
Y?=?zeros(150?1);
Y(strcmp(lab?‘Iris-setosa‘))?????=?1;
Y(strcmp(lab?‘Iris-versicolor‘))?=?2;
Y(strcmp(lab?‘Iris-virginica‘))??=?3;
clear?a*?lab;
%?data?division?random?sampling??
[N?d]?=?size(X);
prop?=?0.7?;?%?number?of?training?samples?/?total?samples
ntrn?=?round(prop*N);?ntst?=?N?-?ntrn;?
%?randomly?choosing?70%?for?training?the?remaining?for?testing
r?=?randperm(N);??%?randomly?permutation
idxtrn?=?r(1:ntrn);?idxtst?=?r(ntrn+1:N);
XTrn?=?X(idxtrn:);?YTrn?=?Y(idxtrn);
XTst?=?X(idxtst:);?YTst?=?Y(idxtst);
%?data?normalization?here?using?mean-centering
XTrnm?=?XTrn?-?ones(ntrn1)*mean(XTrn);
XTstm??=?XTst?-?ones(ntst1)*mean(XTrn);
%?PCA?eigenvector
C?=?XTrnm‘*XTrnm/ntrn;?%?covariate?matrix
[V?D]?=?eig(C)?;?%?eigen-decomposition
D?=?diag(D);?[sorted?idx]?=?sort(D‘descend‘);
D?=?D(idx);?V?=?V(:
- 上一篇:matlab空間計量軟件包
- 下一篇:四元數(shù)MATLAB工具箱
評論
共有 條評論