PCA降维实践:MATLAB代码详解

需积分: 7 2 下载量 187 浏览量 更新于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)`。 通过以上步骤,我们可以有效地将高维数据降维,减少数据复杂性,同时保持数据的大部分信息,这对于数据分析、机器学习模型的训练以及数据可视化等任务具有重要意义。