• 大小: 2KB
    文件类型: .m
    金币: 2
    下载: 0 次
    发布日期: 2024-01-28
  • 语言: Matlab
  • 标签: MATLAB  PCA  iris  

资源简介

matlab PCA的m文件。数据集Iris是常用的分类实验数据集,由Fisher, 1936收集整理。 CSDN上原来有一个arff格式的鸢尾花数据集,不方便matlab直接调用。 我的这个数据集是txt格式的,在matlab下可以直接一句命令“load('iris.txt')”加载。 iris以鸢尾花的特征作为数据来源,常用在分类操作中。该数据集由3种不同类型的鸢尾花的50个样本数据构成。其中的一个种类与另外两个种类是线性可分离的,后两个种类是非线性可分离的。 该数据集包含了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(:

评论

共有 条评论