PCA降维实践:MATLAB代码详解
需积分: 7 91 浏览量
更新于2024-08-04
1
收藏 2KB TXT 举报
"PCA(主成分分析)是一种常用的统计学方法,用于将高维数据集转换为低维表示,同时保留原始数据中的大部分方差。本资源提供了PCA在MATLAB环境下的实现步骤,通过示例代码展示了如何进行数据预处理、特征值与特征向量的计算、主成分的选择以及结果可视化。"
PCA降维在MATLAB中的实现主要分为以下几个步骤:
1. **数据预处理**:首先,我们需要加载数据集,例如在这里使用的是`loadfisheriris`数据集。然后,提取特征并进行中心化处理,使得数据集的均值为0。在代码中,我们使用`mean(X)`计算均值,然后创建一个全1向量,乘以数据集的行数,得到`meanX`,最后用`centredX = X - meanX`实现数据中心化。
2. **协方差矩阵计算**:计算中心化后的数据的协方差矩阵,这可以通过MATLAB内置函数`cov(centredX)`实现。协方差矩阵反映了不同特征之间的线性关系。
3. **特征值与特征向量计算**:对协方差矩阵进行特征分解,`[W, Lambda] = eig(C)`,其中`W`是特征向量矩阵,`Lambda`是对角元素为特征值的矩阵。特征值表示了各个特征向量对应的特征在数据变化中的重要性。
4. **特征值排序**:由于`eig`函数计算出的特征值是按升序排列的,通常我们需要按照特征值大小降序排列,以便选择具有最大方差的主成分。代码中通过`ev = ev(:, end:-1:1)`实现了这一操作。
5. **选择主成分**:选择前k个具有最大方差的特征向量,如本例中选取前两个主成分,对应于`Wr = W(:, 1:2)`。这些主成分可以用来构建新的坐标系统,即主成分空间。
6. **数据转换**:将原始数据转换到新的主成分空间,代码中使用`Tr = centredX * Wr`完成此步骤。
7. **方差贡献率**:计算累积方差贡献率,`cumsum(ev)/sum(ev)`,并绘制累计方差贡献率曲线,以确定合适的主成分数量。在图中,当累积方差贡献率达到一定阈值(如95%)时,可以确定主成分的个数。
8. **可视化**:使用散点图可视化转换后的新坐标空间数据,如`scatter(Tr(:,1), Tr(:,2), 130, categorical(species), '.')`,颜色编码代表不同的类别。
此外,代码还展示了使用`svd`函数和`pca`函数(主成分分析函数)来实现PCA,这两种方法都可以得到相同的结果。`pca`函数更方便,可以直接指定保留的主成分数量,如`[Wr, Tr, ev] = pca(X, 'NumComponents', 2)`。
通过以上步骤,我们可以有效地将高维数据降维,减少数据复杂性,同时保持数据的大部分信息,这对于数据分析、机器学习模型的训练以及数据可视化等任务具有重要意义。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-07-14 上传
2019-05-19 上传
2021-10-10 上传
2023-06-30 上传
unbekannten
- 粉丝: 19
- 资源: 78
最新资源
- matlab自相关代码-genomewide-nucleosome-mapping:在整个基因组中定位核小体
- lovelace-ios-dark-mode-theme:bas @basnijholt的主题基于Lovelace Home Assistant的iOS黑暗模式
- mule-webapp-example:Mule JavaEE Web 应用程序 (WAR) 示例
- 基于Android的个人记账工具设计源码
- 行业分类-设备装置-便携式无线信息终端设备、屏幕操作方法、记录媒体和信息处理设备.zip
- spi_spi_SPI验证_
- Mechanical-Haven:这是使用FTB启动器的机械避难所Modpack
- ojdbc7jar+javaee-api-8.0.jar.rar
- c语言习题 (数组).zip
- 全国高校计算机能力挑战赛模拟练习数据.zip
- 行业文档-设计装置-重叠不粘合环保纸浆方便面碗.zip
- 基于Asp.net的超市管理系统源码(源码+论文).rar
- 基于Springboot的办公协同小程序设计源码
- Mutator-开源
- libJCX:JacobCXDev使用的库—用Objective-C编写
- csv2mt940:从 code.google.compcsv2mt940 自动导出