在Python中进行主成分分析(PCA)的步骤如下:
导入必要的库
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.datasets import load_irisfrom sklearn.decomposition import PCA
准备数据
加载数据集iris = load_iris()X = iris.datay = iris.target
数据标准化
计算均值和标准差X_mean = np.mean(X, axis=0)X_std = np.std(X, axis=0)标准化数据X_normalized = (X - X_mean) / X_std
计算协方差矩阵
计算协方差矩阵cov_matrix = np.cov(X_normalized, rowvar=False)
特征值分解
计算协方差矩阵的特征值和特征向量eig_vals, eig_vecs = np.linalg.eig(cov_matrix)
选择主成分
选择最大的k个特征值对应的特征向量k = 2 选择降维后的维度idx = eig_vals.argsort()[::-1] 降序排列特征值索引eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:,i]) for i in idx]eig_pairs.sort(key=lambda x: x, reverse=True) 按特征值大小排序matrix_w = np.hstack((eig_pairs.reshape(X_normalized.shape,1), eig_pairs.reshape(X_normalized.shape,1))) 构建变换矩阵

投影数据
将原始数据投影到选定的主成分上X_pca = X_normalized.dot(matrix_w)
可视化结果(可选):
可视化降维后的数据plt.scatter(X_pca[y == 0, 0], X_pca[y == 0, 1], color='red', label='Iris-setosa')plt.scatter(X_pca[y == 1, 0], X_pca[y == 1, 1], color='blue', label='Iris-versicolor')plt.scatter(X_pca[y == 2, 0], X_pca[y == 2, 1], color='green', label='Iris-virginica')plt.xlabel('First Principal Component')plt.ylabel('Second Principal Component')plt.legend()plt.show()
以上步骤展示了如何在Python中手动实现主成分分析。在实际应用中,可以使用`sklearn.decomposition.PCA`类简化这个过程,该类内部实现了上述大部分步骤,并且通常更优化、更易于使用。
使用sklearn的PCA类进行降维pca = PCA(n_components=2)X_pca = pca.fit_transform(X_normalized)
以上代码展示了如何使用`sklearn`库中的`PCA`类进行主成分分析。
