PCA算法理解

其实PCA算法与SVD算法目标是一致的,就是简化数据,去噪,PCA有个缺点,可能会缺少重要信息。

PCA有一个核心思想:  方差最大的方向表示数据中最重要的信息。所以PCA算法是在原数据上从新建立一个坐标,新坐标是按照方差最大的方向上建立。

程序上是

     1.  需要数据归一化      

     2. 计算协方差

      3. 计算协方差的特征值和特征向量(新的坐标轴)

      4. 根据特征值从大到小,保留部分特征

       5. 使用保留的特征对应的特征向量对元数据进行降维

协方差是衡量两个变量的变化趋势

                                

扫描二维码关注公众号,回复: 5551879 查看本文章

这里我详细说一下cov的计算过程:

                                                                                     

     data  =   [[2,7,9],[3,3,2],[5,7,5]]

2

7

9

3

3

2

5

7

5

cdata = np.cov(data, rowvar=0) rowvar=0在计算协方差时使用data的列作为变量

                                  计算协方差的特征向量与特征值:

w, u= np.linalg.eig(np.mat(cdata))

   官方文当的解释 w是特征值的数组,w[i] 对应的特征向量是  u[ :,  i]

选择保留的特征,需要给w排序,从大到小, 并且找出对应的特征向量(按照特征值从大到小)

rect = u[:, [....]]  #这里就写选择固有特征

给数据降维:

newdata =  data * rect

还原原始数据:

newdata * rect.T

猜你喜欢

转载自blog.csdn.net/weixin_39594447/article/details/88595294