主成分分析\2.28

主成分分析(PCA)

一、概念

主成分分析是一种数学降维方法,将原来众多具有关联性变量重新组合为一组新的相互间无关系的综合变量来代替原来的变量。

二、用途及分类

主成分分析用于缩小问题变量个数,减小解决问题的难度。通过PCA可计算出各个变量对于问题的重要程度(贡献率)。

目前主要有两种方法。一种是基于特征值分解协方差矩阵,另一种是根据SVD分解协方差矩阵。

三、特征值分解协方差矩阵的步骤

这里以特征值分解协方差矩阵为例

设有n个变量,每个变量有m个数据
1)将原始数据按列组成n行m列矩阵X

2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3)求出协方差矩阵 C = 1 m X X T C=\frac{1}{m}XX^\mathsf{T} C=m1XXT

4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P

6) Y = P X Y=PX Y=PX即为降维到k维后的数据

四、步骤解释

1)均值化:把所有观测点减去观测点的平均值后实现
意义:在数据样本较多时,通过均值化,把数据平移到原点,便于后面操作计算。
2)协方差矩阵的特征值与特征向量是指在数据上方差最大的向量模唱及向量
通过matlab eig函数可求得
3)特征值越大表明其地位程度越大越能代表绝大部分特征,PCA本意就是用少的,协方差为0的维度去代表所有相关变量。因此取前k行即为相应的维度。

查了一天的文献终于对pca有所了解,其中涉及线性代数,matlab操作,以及对数学点乘的理解,用到多方能力。

五、代码

import pandas as pd 
X=pd.DataFrame([[45,0.8,9120],[40,0.12,2600],[38,0.09,3042],[30,0.04,3300],[39,0.21,3500]],columns=['年龄(岁)','负债比率','月收入(元)']) 
from sklearn.preprocessing import StandardScalerX_new=StandardScaler().fit_transform(X)
print(X_new)

from sklearn.decomposition import PCA
pca=PCA(n_components=2)
pca.fit(X_new)
X_transformed=pca.transform(X_new)
print(X_transformed)

输出结果如下:

主成分分析\2.28_第1张图片
第一个二维数组表示标准化以后的特征值,第二个数组表示降维后的结果

六、参考

1.eig函数使用
2.PCA的数学原理

你可能感兴趣的:(数学建模,数据分析)