牛客题解 | 主成分分析 (PCA)

题目

题目链接

主成分分析是一种将高维数据降维的方法,它通过将高维数据投影到低维空间,来保留数据的主要特征。
在本题中,PCA的实现方式是基于特征值分解的,其具体步骤如下:

1. 标准化数据

  • 将输入数据标准化,使得每个特征的均值为0,方差为1。
  • 数学表达式为:
    x s t a n d a r d i z e d = x − μ σ x_{standardized} = \frac{x - \mu}{\sigma} xstandardized=σxμ

2. 计算协方差矩阵

  • 计算标准化后的数据协方差矩阵。
  • 数学表达式为:
    c o v a r i a n c e _ m a t r i x = 1 m − 1 × ( X T × X ) covariance\_matrix = \frac{1}{m-1} \times (X^T \times X) covariance_matrix=m11×(XT×X)

3. 计算特征值和特征向量

  • 计算协方差矩阵的特征值和特征向量。
  • 数学表达式为:
    e i g e n v a l u e s , e i g e n v e c t o r s = n p . l i n a l g . e i g ( c o v a r i a n c e _ m a t r i x ) eigenvalues, eigenvectors = np.linalg.eig(covariance\_matrix) eigenvalues,eigenvectors=np.linalg.eig(covariance_matrix)

4. 选择主成分

  • 选择特征值最大的k个特征向量作为主成分。
  • 数学表达式为:
    p r i n c i p a l _ c o m p o n e n t s = e i g e n v e c t o r s [ : , : k ] principal\_components = eigenvectors[:, :k] principal_components=eigenvectors[:,: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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值