题解|主成分分析
主成分分析 (PCA)
https://www.nowcoder.com/practice/7cd838a1392d423e931ac473e93bd509?tpId=377&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Foj
主成分分析是一种将高维数据降维的方法,它通过将高维数据投影到低维空间,来保留数据的主要特征。 在本题中,PCA的实现方式是基于特征值分解的,其具体步骤如下:
1. 标准化数据
- 将输入数据标准化,使得每个特征的均值为0,方差为1。
- 数学表达式为:
2. 计算协方差矩阵
- 计算标准化后的数据协方差矩阵。
- 数学表达式为:
3. 计算特征值和特征向量
- 计算协方差矩阵的特征值和特征向量。
- 数学表达式为:
4. 选择主成分
- 选择特征值最大的k个特征向量作为主成分。
- 数学表达式为:
标准代码如下
def pca(data, k):
data_standardized = (data - np.mean(data, axis=0)) / np.std(data, axis=0)
covariance_matrix = np.cov(data_standardized, rowvar=False)
eigenvalues, eigenvectors = np.linalg.eig(covariance_matrix)
idx = np.argsort(eigenvalues)[::-1]
eigenvalues_sorted = eigenvalues[idx]
eigenvectors_sorted = eigenvectors[:,idx]
principal_components = eigenvectors_sorted[:, :k]
return np.round(principal_components, 4)