主成分分析法简介

一. 概念介绍

1.1 简介

在对数据进行处理计算时,往往会因为数据的特征值过多而导致计算量大、训练时间长、性能消耗大等问题,这是因为数据维度高导致的计算困难,而主成分分析法(PCA)就是一种数据降维的方法,它通过将原始高维数据映射到一个新的低维空间,从而减少数据的维度,同时尽可能保留原始数据的主要信息。

1.2 流程

  1. 标准化数据:将数据标准化,使得每个特征的均值为0,方差为1。这是为了消除不同量纲的影响。
  2. 计算协方差矩阵:计算标准化数据的协方差矩阵,反映不同特征之间的线性相关性。
  3. 计算特征值和特征向量:对协方差矩阵进行特征值分解,得到特征值和特征向量。特征向量表示主成分的方向,特征值表示沿着该主成分方向的数据变异性。
  4. 选择主成分:根据特征值的大小选择前k个主成分,这些主成分对应的数据变异性最大。
  5. 转换数据:将原始数据投影到选定的主成分上,从而得到降维后的数据。

1.3 效果

  1. 降维:减少数据的维度,降低数据的复杂性,便于后续处理和分析。
  2. 去噪:通过保留主要的变异性,去除噪声和冗余信息,提高数据的质量。
  3. 可视化:将高维数据投影到2D或3D空间,便于可视化和理解数据结构。

二. 代码实现

import numpy as np

def pca(X, num_components):
    # 标准化数据
    X_meaned = X - np.mean(X, axis=0)
    
    # 计算协方差矩阵
    cov_matrix = np.cov(X_meaned, rowvar=False)
    
    # 计算特征值和特征向量
    eigen_values, eigen_vectors = np.linalg.eigh(cov_matrix)
    
    # 按特征值降序排列特征向量
    sorted_index = np.argsort(eigen_values)[::-1]
    sorted_eigenvalue = eigen_values[sorted_index]
    sorted_eigenvectors = eigen_vectors[:, sorted_index]
    
    # 选择前k个特征向量
    eigenvector_subset = sorted_eigenvectors[:, 0:num_components]
    
    # 转换数据
    X_reduced = np.dot(eigenvector_subset.transpose(), X_meaned.transpose()).transpose()
    
    return X_reduced

# 示例数据
X = np.array([[2.5, 2.4], [0.5, 0.7], [2.2, 2.9], [1.9, 2.2], [3.1, 3.0], [2.3, 2.7], [2, 1.6], [1, 1.1], [1.5, 1.6], [1.1, 0.9]])

# 应用PCA,降到1维
X_reduced = pca(X, 1)
print("降维后的数据:\n", X_reduced)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值