北京网站建设华大,网站模拟课堂模式应该怎么做,手机网站开发 图库类,成都专业logo设计公司主成分分析#xff08;Principal Component Analysis#xff0c;PCA#xff09;是一种无监督的机器学习算法#xff0c;通常用于高维数据的降维、提取主要特征、数据降噪和可视化。PCA的基本思想是将原始数据的多个变量转换为少数几个相互独立的变量#xff08;即主成分Principal Component AnalysisPCA是一种无监督的机器学习算法通常用于高维数据的降维、提取主要特征、数据降噪和可视化。PCA的基本思想是将原始数据的多个变量转换为少数几个相互独立的变量即主成分这些主成分能够尽可能多地保留原始数据的信息。 目录
基本概念
1.主成分Principal Component
2.方差Variance
3.协方差
4.协方差矩阵
5.特征值和特征向量
工作步骤
1.准备数据矩阵
2.标准化数据
3.计算协方差矩阵
4.计算特征值和特征向量
5.构建主成分得分
6.解释主成分
应用
1.准备数据
2.PCA降维
3.数据可视化 基本概念 1.主成分Principal Component
通过原始数据集变量的线性组合构成的新变量。第一个主成分捕获了数据中最多的信息即最大的方差第二个主成分捕获了剩余方差中最大的部分且与第一个主成分正交即无相关性以此类推。 2.方差Variance
衡量数据分布的离散程度。在PCA中方差越大表示该成分包含的信息量越多。计算公式为 。 3.协方差
衡量两个随机变量联合变化趋势的统计量。若两变量的增减趋势相同即一个变量增加另一个变量也增加呈正相关则协方差 0若一个变量增加而另一个变量减少则协方差 0。计算公式为 。 4.协方差矩阵
表示各变量间协方差的矩阵不仅包含变量自身的方差还包含变量间的协方差。表示为 其中 p表示变量数。 若已知 n×p的数据矩阵其中 n表示观测数。则经过标准化处理协方差矩阵可以这样计算 。 5.特征值和特征向量
即协方差矩阵的特征值和特征向量揭示了数据的内在结构。特征向量表示方向即主成分的方向是单位向量特征值表示方差的大小反映原始数据点映射到主成分方向上与中心的距离。满足 。 工作步骤 1.准备数据矩阵
将原始数据整理成一个矩阵每一行代表一个观测或样本每一列代表一个变量。对于有 n个样本和 p个变量的数据集将得到一个 n×p的矩阵。 2.标准化数据
当变量的量纲或量级差异较大时会高估或低估其表达的信息量从而影响分析因此在应用PCA之前通常需要对数据进行标准化又称中心化。常用 z-score标准化即使每个变量满足均值为0标准差为1。计算公式为 。 3.计算协方差矩阵
计算经标准化后数据矩阵的协方差矩阵。协方差矩阵反映了数据中变量之间的线性关系。 4.计算特征值和特征向量
计算协方差矩阵的特征值和对应的特征向量。特征值有多个解因为协方差矩阵是一个方阵所以其特征值 ≤ p。按特征值的大小将对应的特征向量从大到小排序特征值越大对应的主成分就越重要即在该方向上数据的变异性越大。最后根据需要保留的信息量如保留总方差的90%选择前 k个最大的特征值对应的特征向量作为主成分。 5.构建主成分得分
利用选定的主成分对应的特征向量将原始数据转换为一组新的低维数据。转换方法为将数据矩阵与特征向量矩阵相乘得到低维空间的数据矩阵。计算公式为
其中 k亦可以解释为原始数据在最重要的 k个方向上的投影。 6.解释主成分
根据特征向量的元素即载荷可以用原始变量来表达主成分并反映原始变量的贡献程度。载荷反映了原始变量在新的主成分方向上的权重表示为 其中 k表示为主成分的个数p表示为原始变量的个数 表示为第 k个主成分的载荷 表示为第 k个主成分的特征向量。故主成分可以表示为 其中 表示为第 k个主成分 表示为第 p个原始变量。 通过分析每个主成分的载荷我们可以进一步解释每个主成分的含义
高载荷变量对于第 k个主成分载荷的绝对值较大的变量对该主成分的形成贡献较大因此这些变量在解释主成分时更为重要
载荷的符号载荷的符号正或负有助于理解变量之间的关系。同一主成分中载荷符号相同的变量表现为正相关符号不同的变量表现为负相关。 应用 通过 Python sklearn库实现 PCA 1.准备数据
随机生成一组6维的数据集。
import numpy as npnp.random.seed(42) # 确保数据可重复
mean np.zeros(6) # 随机生成6维数据的均值向量
cov np.diag(np.arange(1, 7)) # 创建一个6x6的协方差矩阵方差从1到6
X np.random.multivariate_normal(mean, cov, 200) # 随机生成200个数据点
X 2.PCA降维
将数据降维到2维。
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA# 标准化数据
scaler StandardScaler()
X_scaled scaler.fit_transform(X)# 应用PCA
pca PCA(n_components2) # 降至2维
X_pca pca.fit_transform(X_scaled) 3.数据可视化
import matplotlib.pyplot as pltplt.figure(figsize(8, 8))
plt.scatter(X_pca[:, 0], X_pca[:, 1], s40, alpha1, edgecolorsblack, linewidths0.5)
plt.title(PCA Result, fontsize20)
plt.xlabel(Principal Component 1, fontsize15)
plt.ylabel(Principal Component 2, fontsize15)
plt.grid(True)# 保存为PDF格式
plt.savefig(PCA_Result_scatter.pdf, formatpdf)plt.show()