使用Matlab数据降维工具箱进行PCA降维

文章讲述了如何在Matlab的drtoolbox工具箱中使用PCA对高维能谱数据进行降维,强调了降维时目标维度需小于数据样本数的规则,并通过实例展示了如何调整矩阵形状以适应PCA的维度要求。

为了将高维度的能谱数据进行降维,在学习PCA降维时,了解到Matlab中的drtoolbox工具箱,这个Matlab数据降维工具箱,包括了包含PCA在内的几乎所有的数据降维方法,使用起来非常方便。下面是这个工具箱的安装方式(我使用的是Matlab R2016a)

下载地址:

https://lvdmaaten.github.io/drtoolbox/code/drtoolbox.tar.gz

下载后,将其解压到Matlab目录下的的toolbox文件夹中,并将其全部添加到路径。

 

完成后,在命令行输入rehash toolboxcache 命令,完成工具箱加载。

>>rehash toolboxcache

可以在命令行输入what drtoolbox和what drtoolbox\techniques测试安装是否成功。

>>what drtoolbox

>>what drtoolbox\techniques

 起初我意向将4096*1的能谱数据降低维度,后来了解到drtoolbox 的 compute_mapping 函数接受一个数据矩阵作为输入,其中每一行代表一个样本,每一列代表一个特征。于是我将数据转置为1*4096的形式,进行PCA降维。

data = importdata('1.txt');
data = data.data;
X = data(9:end, 1);
Y = X';
[mappedX, mapping] = compute_mapping(Z, 'PCA', 32);

遇到如下报错

警告: Target dimensionality reduced to 1. 
> In pca (line 53)
  In compute_mapping (line 378) 

 提示我PCA (主成分分析) 算法在降维过程中自动将目标维度调整为 1。

参考了相关博客 https://blog.csdn.net/mingtian715/article/details/54172281

了解到了PCA降维后的维数一定要小于数据样本数!!!(详情请见上博客)

为了验证该结论,我使用reshape函数将该1*4096的矩阵转换为16*256的,并试图将其降维为16*32。

 

提示我维度自动调整到了16,刚好为数据样本数,降维后的矩阵也为16*16,验证了以上说法。于是我将1*4096的矩阵reshape为32*128,设置PCA降维后的矩阵维度为2,并以散点图形式显示。

data = importdata('1.txt');
X = data(9:end, 1);
Y = X';
Z=reshape(Y,32,128)  
[mappedX, mapping] = compute_mapping(Z, 'PCA', 2);
scatter(mappedX(:, 1), mappedX(:, 2));
title('Result of Dimensionality Reduction');

 成功将其降维为32*2,实现了使用Matlab数据降维工具箱进行PCA降维。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值