• PCA分析的疑问


    R 与python scikit-learn PCA的主成分结果有部分是反的

    • 通过R和python分别计算出来的PCA的结果存在某些主成分的结果是相反的,这些结果是没有问题的,只是表示这个分量被反转了,结果同样是有效的。
    • PCA的本质是寻找一条正交的线,这条线应该是可以有不同方向的

    数据格式

    148    41    72    78
    139    34    71    76
    160    49    77    86
    149    36    67    79
    159    45    80    86
    142    31    66    76
    153    43    76    83
    150    43    77    79
    151    42    77    80
    139    31    68    74
    140    29    64    74
    161    47    78    84
    158    49    78    83
    140    33    67    77
    137    31    66    73
    152    35    73    79
    149    47    82    79
    145    35    70    77
    160    47    74    87
    156    44    78    85
    151    42    73    82
    147    38    73    78
    157    39    68    80
    147    30    65    75
    157    48    80    88
    151    36    74    80
    144    36    68    76
    141    30    67    76
    139    32    68    73
    148    38    70    78
    

    python计算PCA代码

    from sklearn.decomposition import PCA
    pca = PCA()
    data = pd.read_csv("test.xls",sep="	")
    mda = data.T.values
    pca = PCA()
    pc = pca.fit_transform(mda)
    pd.DataFrame(pc)
    
    

    R计算PCA代码

    test<-data.frame(
      X1=c(148, 139, 160, 149, 159, 142, 153, 150, 151, 139,
               140, 161, 158, 140, 137, 152, 149, 145, 160, 156,
               151, 147, 157, 147, 157, 151, 144, 141, 139, 148),
      X2=c(41, 34, 49, 36, 45, 31, 43, 43, 42, 31,
               29, 47, 49, 33, 31, 35, 47, 35, 47, 44,
               42, 38, 39, 30, 48, 36, 36, 30, 32, 38),
      X3=c(72, 71, 77, 67, 80, 66, 76, 77, 77, 68,
              64, 78, 78, 67, 66, 73, 82, 70, 74, 78,
              73, 73, 68, 65, 80, 74, 68, 67, 68, 70),
      X4=c(78, 76, 86, 79, 86, 76, 83, 79, 80, 74,
               74, 84, 83, 77, 73, 79, 79, 77, 87, 85,
               82, 78, 80, 75, 88, 80, 76, 76, 73, 78)
      )
    data=t(as.matrix(test))
    #'princomp'只能在单位比变量多的情况下使用
    data.pr<-princomp(data,cor=TRUE)
    #cor是逻辑变量 当cor=TRUE表示用样本的相关矩阵R做主成分分析
    当cor=FALSE表示用样本的协方差阵S做主
    das = summary(data.pr,loadings=TRUE)
    
    #当样品比比变量少时用fast.prcomp
    data.pca = fast.prcomp(data,retx=T,scale=F,center=T)
    a = summary(data.pca)
    pc = as.data.frame(a$x)
    
    
    
  • 相关阅读:
    14.1.1 使用InnoDB 表的好处:
    7.5.1 Point-in-Time Recovery Using Event Times 使用Event Times 基于时间点恢复
    7.5 Point-in-Time (Incremental) Recovery Using the Binary Log 使用binay log 基于时间点恢复
    7.4.1 Dumping Data in SQL Format with mysqldump
    7.3.2 Using Backups for Recovery 使用备份用于恢复
    7.3.1 Establishing a Backup Policy
    RR 和RC隔离问题
    mark
    weblogic12
    转一篇对EJB理解的文章
  • 原文地址:https://www.cnblogs.com/raisok/p/11432985.html
Copyright © 2020-2023  润新知