实验五 PCA特征提取
主成分分析(PCA)是常用的特征降维方法。实验目的在于加深学生对PCA原理的理解,通过实际的数据处理掌握PCA的处理流程、验证PCA的性质,体会其在模式识别中的作用。
1实验原理
PCA是寻求方差最大的投影方向对原始数据进行变换,得到一组相互之间不相关的新特征。投影方向可取样本数据协方差矩阵的特征向量,各特征向量的重要程度利用其对应的特征值来衡量。
变换形式为y=WT x,
,变换矩阵W由样本协方差矩阵的特征向量构成。可更改构成变换矩阵的向量个数,从而得到不同数量的特征,实现特征降维。
2实验内容
利用Iris数据集进行实验。该数据集以鸢尾花的特征作为数据来源,由3种不同类型的鸢尾花的50个样本数据构成。
样本特征(属性):
Sepal.Length(花萼长度),单位是cm;
Sepal.Width(花萼宽度),单位是cm;
Petal.Length(花瓣长度),单位是cm;
Petal.Width(花瓣宽度),单位是cm;
种类:Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾)、Iris Virginica(维吉尼亚鸢尾)。
鸢尾花数据的特征维数是4,利用PCA进行降维、结合最近邻法完成分类。
3实验要求
- 利用最近邻法针对Iris原始特征进行分类;
三类模式,四维特征
代码: clc;clear;close all
clc;clear
load Iris;
X = Iris(2:5,:);
S=cov(X');
[V,D]=eig(S);
分类结果:
2利用PCA进行数据降维、再用最近邻法分类;
代码:
%ÆäËûʵÏÖ·½Ê½
% % % X_D = X - repmat(mean(X,2),1,size(X,2));
% % % [V1,D1]=eig(X_D*X_D');
% % %
% % % %ÖÐÐÄ»¯ºóµÄÑù±¾Êý¾Ý
% % % [UU,SS,VV] = svd(X_D);
lamda = diag(D);
lamda = flipud(lamda);
V=fliplr(V);
W=V(:,1:4);
y = W'*X;
Xr = W*y;
Sy=cov(y');
figure(1);hold on;
plot(y(1,1:50), y(2,1:50),'r*');
plot(y(1,51:100), y(2,51:100),'g+');
plot(y(1,101:150), y(2,101:150),'bs');
3针对原始特征和变换之后的新特征,更改用参与分类的特征分量、比较结果。
代码:
% figure(2);hold on;
% plot(X(3,1:50), X(1,1:50),'r*');
% plot(X(3,51:100), X(1,51:100),'g+');
% plot(X(3,101:150), X(1,101:150),'bs');
figure(2);
subplot(2,2,1); d=1; hold on;
plot(y(d,1:50), ones(1,50),'r*');
plot(y(d,51:100),ones(1,50),'g+');
plot(y(d,101:150), ones(1,50),'bs');
subplot(2,2,2); d=2; hold on;
plot(y(d,1:50), ones(1,50),'r*');
plot(y(d,51:100),ones(1,50),'g+');
plot(y(d,101:150), ones(1,50),'bs');
subplot(2,2,3); d=3; hold on;
plot(y(d,1:50), ones(1,50),'r*');
plot(y(d,51:100),ones(1,50),'g+');
plot(y(d,101:150), ones(1,50),'bs');
subplot(2,2,4); d=4; hold on;
plot(y(d,1:50), ones(1,50),'r*');
plot(y(d,51:100),ones(1,50),'g+');
plot(y(d,101:150), ones(1,50),'bs');
结果