【Matlab】降维方法_主成分分析PCA

  • 1.基本思想
  • 2.数据集介绍
  • 3.文件结构
  • 4.详细代码及注释
  • 5.运行结果


1.基本思想

主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维技术,主要思想是将原始数据在新的坐标系下进行变换,使得变换后的数据尽可能地保留原有的信息。在新的坐标系下,每个维度被称为主成分(Principal Component,PC),主成分是原始数据在新的坐标系下的线性组合。

PCA 的基本思想是将多个相关的变量通过线性变换,转化为若干个不相关的变量,其中第一个主成分尽可能的解释原始数据的总方差,第二个主成分尽可能的解释原始数据剩余的方差,以此类推。这样就可以从多个相关变量中提取出少数几个主成分,达到降维的效果,并且保留原始数据中的大部分信息。

具体来说,PCA 的实现步骤如下:

  1. 对原始数据进行归一化处理,使得各个变量的取值范围相同。
  2. 计算协方差矩阵,衡量不同变量之间的相关性。
  3. 对协方差矩阵进行特征值分解,得到特征值和特征向量。
  4. 对特征值进行排序,选择前 k 个特征向量。
  5. 将数据投影到前 k 个特征向量所构成的新的坐标系中,得到降维后的数据。

PCA 可以用于数据压缩、可视化、去噪和特征提取等应用场景,常用于图像处理、模式识别和机器学习等领域。

2.数据集介绍

鸢尾花(Iris)数据集是一个经典的数据集,用于机器学习和统计学习中的分类和聚类问题。该数据集包含了三种不同类型的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)的测量数据,每种花各有50个样本。每个样本包含四个特征,即萼片长度、萼片宽度、花瓣长度和花瓣宽度,以及它所属的鸢尾花类型。

该数据集最早由英国统计学家和生物学家Ronald Fisher在1936年的一篇论文中介绍,并一直被广泛用于分类和聚类问题的研究中。由于其简单性和广泛应用性,鸢尾花数据集已成为了机器学习和统计学习中的标准数据集之一。在实践中,该数据集也常被用于学习数据可视化和降维方法,例如PCA和KPCA等。

本文采用的数据是.xlsx格式,前四列为样本的特征值,最后一列为样本的标签,标签值为1,2,3

3.文件结构

【Matlab】降维方法_主成分分析PCA_数据

iris.xlsx						% 鸢尾花数据集,具体格式参考第2部分
Main.m							% 主函数

4.详细代码及注释

% 清空变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行

% 加载数据
data = readmatrix('iris.xlsx');

% 将数据按列归一化
data_norm = zscore(data(:,1:end-1));

% 计算协方差矩阵和特征向量
cov_mat = cov(data_norm);
[eig_vec, eig_val] = eig(cov_mat);

% 对特征向量进行排序
[~, eig_idx] = sort(diag(eig_val), 'descend');
eig_vec_sorted = eig_vec(:, eig_idx);

% 选择前 k 个特征向量
k = 2; % 降到 2 维
eig_vec_selected = eig_vec_sorted(:, 1:k);

% 将数据投影到新的坐标系中
data_pca = data_norm * eig_vec_selected;

% 绘制降维结果
gscatter(data_pca(:,1), data_pca(:,2), data(:,end));
xlabel('Component 1');
ylabel('Component 2');
title('PCA of Iris Dataset');

5.运行结果

【Matlab】降维方法_主成分分析PCA_原始数据_02