• qinggeouye
    2019-03-31
    markdown 语法支持不是很好

    (1) 标准化原始数据
    $$
    x' = \frac{x-μ}{σ}
    $$
    第一列

    均值 $μ_1 = 0$ , 方差 ${σ_1}^2 = [(1-0)^2 + (2-0)^2 + (-3-0)^2]/3 = 14/3$

    第二列

    均值 $μ_2 =1/3 $ , 方差 ${σ_2}^2 = [(3-1/3)^2 + (5-1/3)^2 + (-7-1/3)^2]/3 = 248/9$

    第三列

    均值 $μ_3 =-19/3 $ , 方差 ${σ_3}^2 = [(-7+19/3)^2 + (-14+19/3)^2 + (2+19/3)^2]/3 = 386/9$

    则,
    $$
    \mathbf{X'} = \begin{vmatrix} 0.46291005&0.50800051&-0.10179732\\0.9258201&0.88900089&-1.17066918\\-1.38873015&-1.3970014&1.2724665\\\end{vmatrix}
    $$

    (2)协方差矩阵
    $$
    \mathbf{cov(X_{,i}, X_{,j})} = \frac{\sum_{k=1}^m(x_{k,i} - \bar{X_{,i}})(x_{k,j} - \bar{X_{,j}})}{m-1}
    $$

    $$
    \mathbf{X'}.mean(asix=0) = [0,0, -7.401486830834377e-17]
    $$

    $$
    \mathbf{cov(X_{,i}, X_{,j})} = \frac{(\mathbf{X'[:,i-1]} - \mathbf{X'[:,i-1]}.mean()).transpose().dot(\mathbf{X'[:,j-1]} - \mathbf{X'[:,j-1]}.mean())} {m-1}
    $$

    协方差矩阵(对角线上是各维特征的方差):
    $$
    \mathbf{COV} = \begin{vmatrix} \mathbf{cov(X_{,1}, X_{,1})} & \mathbf{cov(X_{,1}, X_{,2})} & \mathbf{cov(X_{,1}, X_{,3})} \\ \mathbf{cov(X_{,2}, X_{,1})} & \mathbf{cov(X_{,2}, X_{,2})} & \mathbf{cov(X_{,2}, X_{,3})} \\ \mathbf{cov(X_{,3}, X_{,1})} &\mathbf{cov(X_{,3}, X_{,2})} &\mathbf{cov(X_{,3}, X_{,3})}\\\end{vmatrix} = \begin{vmatrix} 1.5 & 1.4991357 & -1.44903232 \\ 1.4991357 & 1.5 & -1.43503825 \\ -1.44903232 & -1.43503825 & 1.5 \\\end{vmatrix}
    $$
    展开
    
     3
  • Joe
    2019-03-22
    一直有个问题为什么协方差是除以m-1,而不是m。方差,均方根等公式也是除m-1。好奇怪。

    作者回复: 这是个很好的问题,涉及的内容比较多,我可以放在后面答疑来解释

    
     2
  • 黄振宇
    2019-11-29
    有个问题,黄老师能否帮忙解答下。
    降维后的特征集合是之前所有特征的子集合吗,是相当于是先对数据的特征向量做了筛选吗?只不过我们把筛选的工作交给了特征值?

    还是说降维之后乘以新的特征向量之后,原始数据的意义是否变了呢?
    
    
  • 杨超
    2019-06-20
    您好,计算完特征值,我们可以把不同的λ值代入 λE−A,后面那个公式是怎么来的呢?以及特征向量的计算方法不是很理解您的意思,可以再讲解一下么


    作者回复: 这个地方标号手误,应该是把λ代入λI-X,计算出特征向量

    
    
  • 余泽锋
    2019-04-11
    import numpy as np
    import pandas as pd
    from sklearn.preprocessing import scale
    array = np.array([[1, 3, -7], [2, 5, -14], [-3, -7, 2]])
    array = scale(array)
    df = pd.DataFrame(array)
    df.corr()
    展开
    
    
  • yaya
    2019-03-22
    所以上只是讲解pca的步骤吗?非常赞同要明白他是为什么被提出的,怎么来的观点,但是pca如果只是记步骤很容易忘记,觉得还是从如何建模,然后推导而来更有印象。

    作者回复: 非常同意,我会在下一篇解释为什么PCA要这么做

    
    
我们在线,来聊聊吧