吴江建网站优荐苏州聚尚网络,望野博物馆馆长,地方门户网站源码下载,做逆战网站的名字吗定义
主成分分析#xff08;PCA#xff09;是常用的线性数据降维技术#xff0c;采用一种数学降维的方法#xff0c;在损失很少信息的前提下#xff0c;找出几个综合变量作为主成分#xff0c;来代替原来众多的变量#xff0c;使这些主成分能够尽可能地代表原始数据的信…定义
主成分分析PCA是常用的线性数据降维技术采用一种数学降维的方法在损失很少信息的前提下找出几个综合变量作为主成分来代替原来众多的变量使这些主成分能够尽可能地代表原始数据的信息其中每个主成分都是原始变量的线性组合而且各个主成分之间不相关即线性无关
基本原理
找出第一个主成分的方向也就是数据 方差最大 的方向。 找出第二个主成分的方向也就是数据 方差次大 的方向并且该方向与第一个主成分方向 正交(orthogonal 如果是二维空间就叫垂直)。 通过这种方式计算出所有的主成分方向。 通过数据集的协方差矩阵及其特征值分析我们就可以得到这些主成分的值。 一旦得到了协方差矩阵的特征值和特征向量我们就可以保留最大的 N 个特征。这些特征向量也给出了 N 个最重要特征的真实结构我们就可以通过将数据乘上这 N 个特征向量 从而将它转换到新的空间上
简单代码实例
import numpy as np# 生成示例数据
np.random.seed(0)
data np.random.rand(5, 3) # 5个样本每个样本有3个特征# 计算均值
mean np.mean(data, axis0)# 中心化数据减去均值
centered_data data - mean# 计算协方差矩阵
cov_matrix np.cov(centered_data, rowvarFalse)# 计算特征值和特征向量
eigenvalues, eigenvectors np.linalg.eig(cov_matrix)# 对特征值排序
sorted_indices np.argsort(eigenvalues)[::-1]
eigenvalues eigenvalues[sorted_indices]
eigenvectors eigenvectors[:, sorted_indices]# 选择要保留的主成分数量
num_components 2# 取前num_components个特征向量
selected_eigenvectors eigenvectors[:, :num_components]# 使用特征向量变换数据
reduced_data np.dot(centered_data, selected_eigenvectors)# reduced_data现在包含了降维后的数据每行是一个样本每列是一个主成分print(原始数据:\n, data)
print(降维后的数据:\n, reduced_data)