PCA代码matlab
时间: 2024-02-29 10:50:37 浏览: 88
PCA(Principal Component Analysis,主成分分析)是一种常用的降维技术,可以用于数据预处理和特征提取。下面是一个简单的PCA代码示例(使用MATLAB):
```matlab
% 假设有一个数据矩阵X,每行代表一个样本,每列代表一个特征
X = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12];
% 中心化数据(减去均值)
mean_X = mean(X);
X_centered = X - mean_X;
% 计算协方差矩阵
cov_X = cov(X_centered);
% 计算特征值和特征向量
[eig_vec, eig_val] = eig(cov_X);
% 对特征值进行排序
eig_val_sorted = diag(sort(diag(eig_val), 'descend'));
% 对特征向量进行排序
eig_vec_sorted = eig_vec(:, flipud(1:size(eig_vec, 2)));
% 选择前k个主成分
k = 2;
eig_vec_selected = eig_vec_sorted(:, 1:k);
% 投影数据到主成分上
X_pca = X_centered * eig_vec_selected;
% 可视化结果
scatter(X_pca(:, 1), X_pca(:, 2));
```
这段代码首先对数据进行中心化,然后计算协方差矩阵。接着,通过计算协方差矩阵的特征值和特征向量,对它们进行排序。最后,选择前k个特征向量作为主成分,并将数据投影到主成分上进行降维。最后一行代码是可视化结果,将降维后的数据在二维平面上进行散点图展示。
阅读全文