标签: pca

PCA使用ggbiplot进行缩放

我正在尝试使用prcomp和绘制主成分分析ggbiplot.我正在获取单位圆外的数据值,并且在调用之前无法重新调整数据prcomp,我可以将数据约束到单位圆.

data(wine)
require(ggbiplot)
wine.pca=prcomp(wine[,1:3],scale.=TRUE)
ggbiplot(wine.pca,obs.scale = 1, 
         var.scale=1,groups=wine.class,ellipse=TRUE,circle=TRUE)
Run Code Online (Sandbox Code Playgroud)

我在调用之前通过减去平均值并除以标准偏差来尝试缩放prcomp:

wine2=wine[,1:3]
mean=apply(wine2,2,mean)
sd=apply(wine2,2,mean)
for(i in 1:ncol(wine2)){
  wine2[,i]=(wine2[,i]-mean[i])/sd[i]
}
wine2.pca=prcomp(wine2,scale.=TRUE)
ggbiplot(wine2.pca,obs.scale=1, 
         var.scale=1,groups=wine.class,ellipse=TRUE,circle=TRUE)
Run Code Online (Sandbox Code Playgroud)

ggbiplot 包安装如下:

require(devtools)
install_github('ggbiplot','vqv')
Run Code Online (Sandbox Code Playgroud)

输出任一代码块:

在此输入图像描述

根据@Brian Hanson在下面的评论,我正在添加一个反映我想要获得的输出的附加图像.

在此输入图像描述

r ggplot2 pca ggbiplot

8
推荐指数
1
解决办法
1万
查看次数

如何获得所有极端方差的PCA所需的组件数量?

我试图获得需要用于分类的组件数量.我已经阅读了类似的问题使用scikit-learn PCA和关于此的scikit文档查找具有最高方差的维度:

http://scikit-learn.org/dev/tutorial/statistical_inference/unsupervised_learning.html#principal-component-analysis-pca

但是,这仍然没有解决我的问题.我的所有PCA组件都非常大,因为我可以选择所有这些组件,但如果我这样做,PCA将毫无用处.

我还在scikit中阅读了PCA库 http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html 它表明了L:

如果n_components =='mle',如果0 <n_components <1,则使用Minka的MLE猜测维度,选择组件数量,使得需要解释的方差量大于n_components指定的百分比

但是,我无法找到有关使用此技术分析PCA的n_components的更多信息

这是我的PCA分析代码:

from sklearn.decomposition import PCA
    pca = PCA()
    pca.fit(x_array_train)
    print(pca.explained_variance_)
Run Code Online (Sandbox Code Playgroud)

结果:

   [  6.58902714e+50   6.23266555e+49   2.93568652e+49   2.25418736e+49
       1.10063872e+49   3.25107359e+40   4.72113817e+39   1.40411862e+39
       4.03270198e+38   1.60662882e+38   3.20028861e+28   2.35570241e+27
       1.54944915e+27   8.05181151e+24   1.42231553e+24   5.05155955e+23
       2.90909468e+23   2.60339206e+23   1.95672973e+23   1.22987336e+23
       9.67133111e+22   7.07208772e+22   4.49067983e+22   3.57882593e+22
       3.03546737e+22   2.38077950e+22   2.18424235e+22   1.79048845e+22
       1.50871735e+22   1.35571453e+22   1.26605081e+22   1.04851395e+22
       8.88191944e+21   6.91581346e+21   5.43786989e+21   5.05544020e+21
       4.33110823e+21   3.18309135e+21   3.06169368e+21   2.66513522e+21
       2.57173046e+21   2.36482212e+21   2.32203521e+21   2.06033130e+21
       1.89039408e+21   1.51882514e+21   1.29284842e+21   1.26103770e+21
       1.22012185e+21   1.07857244e+21   8.55143095e+20   4.82321416e+20 …
Run Code Online (Sandbox Code Playgroud)

pca scikit-learn

8
推荐指数
2
解决办法
3729
查看次数

Matlab:如何在matlab中使用PCA找到数据集中的哪些变量?

我正在使用PCA来找出我的数据集中哪些变量是冗余的,因为它与其他变量高度相关.我在以前使用zscore标准化的数据上使用princomp matlab函数:

[coeff, PC, eigenvalues] = princomp(zscore(x))
Run Code Online (Sandbox Code Playgroud)

我知道特征值告诉我数据集的变化覆盖了每个主成分,并且该系数告诉我第i个原始变量中有多少是第j个主成分(其中i - 行,j - 列).

所以,我认为找出哪些变量出原始数据集是最重要的,这是我至少应该乘以系数_用矩阵的特征值 - _系数的值表示多少每个变量的每个组件都有和特征值告诉这有多重要组成部分是.所以这是我的完整代码:

[coeff, PC, eigenvalues] = princomp(zscore(x));
e = eigenvalues./sum(eigenvalues);
abs(coeff)/e
Run Code Online (Sandbox Code Playgroud)

但这并没有真正显示任何东西 - 我在下面的集合中尝试了它,其中变量1与变量2完全相关(v2 = v1 + 2):

     v1    v2    v3
     1     3     4
     2     4    -1
     4     6     9
     3     5    -2
Run Code Online (Sandbox Code Playgroud)

但我的计算结果如下:

v1 0.5525
v2 0.5525
v3 0.5264
Run Code Online (Sandbox Code Playgroud)

这并没有真正显示任何东西.我希望变量2的结果表明它远不如v1或v3重要.我的哪一次出局是错的?

matlab pca princomp

7
推荐指数
1
解决办法
6960
查看次数

prcomp和ggbiplot:无效的'rot'值

我正在尝试使用R对我的数据进行PCA分析,我找到了这个很好的指南,使用prcompggbiplot.我的数据是两种样本类型,每种类型有三个生物重复(即6行)和大约20000个基因(即变量).首先,使用指南中描述的代码获取PCA模型不起作用:

>pca=prcomp(data,center=T,scale.=T)
Error in prcomp.default(data, center = T, scale. = T) : 
cannot rescale a constant/zero column to unit variance
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除该scale. = T部件,它工作正常,我得到一个模型.这是为什么,这是下面错误的原因?

> summary(pca)
Importance of components:
                             PC1       PC2       PC3       PC4       PC5
Standard deviation     4662.8657 3570.7164 2717.8351 1419.3137 819.15844
Proportion of Variance    0.4879    0.2861    0.1658    0.0452   0.01506
Cumulative Proportion     0.4879    0.7740    0.9397    0.9849   1.00000
Run Code Online (Sandbox Code Playgroud)

其次,绘制PCA.即使只是使用基本代码,我得到一个错误和一个空的情节图像:

> ggbiplot(pca)
Error: invalid 'rot' value
Run Code Online (Sandbox Code Playgroud)

这意味着什么,我该如何解决?是否与制作PCA的(非)规模有关,还是有所不同?我认为它必须与我的数据有关,因为如果我使用标准示例代码(下面),我会得到一个非常好的PCA图.

> data(wine)
> wine.pca=prcomp(wine,scale.=T)
> print(ggbiplot(wine.pca, obs.scale = 1, …
Run Code Online (Sandbox Code Playgroud)

r bioinformatics pca ggbiplot

7
推荐指数
1
解决办法
3590
查看次数

如何导出交互式 rgl 3D 绘图以共享或发布?

我使用 rgl 包在 R 中制作了一个交互式 3D 图。我希望能够将其发送(并保持交互)给一位同事,以便她可以在她的笔记本电脑上的会议中展示(旋转)。有没有办法做到这一点?

这是我用来生成绘图的代码:

这是情节:

library(rgl)
plot3d(pcaGB$x[,1:3], col=gbMeta2.5K$gbColor, type='s', size=1)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

然后我使用此代码使用 writeWebGL 将其导出为 HTML,但到目前为止没有任何运气:

browseURL(paste("file://", writeWebGL(dir=file.path("~/Documents/", "webGL"), width=700), sep=""))
Run Code Online (Sandbox Code Playgroud)

这是我在浏览器窗口中返回的内容:

在此处输入图片说明

我也试过只使用 writeWebGL 但这会在目录中创建一个文件夹,其中包含一个 index.html 文件,该文件在浏览器中打开与上面相同的图像。

3d r pca rgl

7
推荐指数
1
解决办法
1万
查看次数

PySpark中的PCA分析

查看http://spark.apache.org/docs/latest/mllib-dimensionality-reduction.html.这些示例似乎只包含Java和Scala.

Spark MLlib是否支持Python的PCA分析?如果是这样,请指出一个例子.如果没有,如何将Spark与scikit-learn结合起来?

python pca apache-spark apache-spark-ml apache-spark-mllib

7
推荐指数
1
解决办法
1万
查看次数

手动PCA逆变换

我正在使用scikit-learn.我的应用程序的性质是我离线进行拟合,然后只能在线(动态)使用结果系数来手动计算各种目标.

变换很简单,它data * pca.components_就是简单的点积.但是,我不知道如何执行逆变换.pca对象的哪个字段包含逆变换的相关系数?如何计算逆变换?

具体来说,我指的是PCA.inverse_transform()方法调用中可用的sklearn.decomposition.PCA package:如何使用PCA计算的各种系数手动重现其功能?

python numpy pca scikit-learn

7
推荐指数
1
解决办法
7243
查看次数

使用 RPCA 的异常值

我阅读了有关使用 RPCA 查找时间序列数据的异常值的信息。我对 RPCA 的基本原理和理论有所了解。我有一个执行 RPCA 的 Python 库,并且几乎有两个矩阵作为输出(L 和 S),输入数据的低秩近似和稀疏矩阵。

输入数据:(行为一天,10 个特征为列。)

DAY 1 - 100,300,345,126,289,387,278,433,189,153  
DAY 2 - 300,647,245,426,889,987,278,133,295,153  
DAY 3 - 200,747,145,226,489,287,378,1033,295,453
Run Code Online (Sandbox Code Playgroud)

获得的输出:

L  
[[ 125.20560531  292.91525518   92.76132814  141.33797061  282.93586313
   185.71134917  199.48789246   96.04089205  192.11501055  118.68811072]  
 [ 174.72737183  408.77013914  129.45061871  197.24046765  394.84366245
   259.16456278  278.39005349  134.0273274   268.1010231   165.63205458]  
 [ 194.38951303  454.76920678  144.01774873  219.43601655  439.27557808
   288.32845493  309.71739782  149.10947628  298.27053871  184.27069609]]

S  
[[ -25.20560531    0.          252.23867186   -0.            0.
   201.28865083   78.51210754  336.95910795   -0.           34.31188928]  
 [ 125.27262817  238.22986086  115.54938129  228.75953235  494.15633755
   727.83543722   -0. …
Run Code Online (Sandbox Code Playgroud)

python statistics machine-learning outliers pca

7
推荐指数
1
解决办法
2982
查看次数

标准化缩放是使用 sklearn 应用 PCA 的先决条件吗?

我有一组 70 个输入变量,需要对其执行 PCA。根据我的理解,将数据居中,使得每个输入变量的平均值为 ,0方差为1,对于应用 PCA 是必要的。

我很难弄清楚preprocessing.StandardScaler()在将数据集传递给sklearnPCAPCAsklearn 中的函数自行执行之前是否需要执行标准缩放。

如果是后者,那么无论我是否应用,preprocessing.StandardScaler()explained_variance_ratio_应该是相同的。

但结果不同,所以我认为preprocessing.StandardScaler()在申请之前有必要PCA。这是真的吗?

centering pca scikit-learn

7
推荐指数
1
解决办法
3938
查看次数

将“加载”对象转换为数据框 (R)

我正在尝试将“加载”类型的对象转换为 R 中的数据帧。但是,我尝试通过 as_tibble() 或 as.data.frame() 对其进行强制没有奏效。这是代码:

iris_pca <- prcomp(iris[1:4], center = TRUE, scale. = TRUE)
iris_pca$rotation[,1:2] %>% 
  varimax() %>% 
  .$loadings
Run Code Online (Sandbox Code Playgroud)

这打印出来:

Loadings:
             PC1    PC2   
Sepal.Length  0.596 -0.243
Sepal.Width         -0.961
Petal.Length  0.570  0.114
Petal.Width   0.565       

                PC1  PC2
SS loadings    1.00 1.00
Proportion Var 0.25 0.25
Cumulative Var 0.25 0.50
Run Code Online (Sandbox Code Playgroud)

如何将这些数据放入数据框中?

r pca dataframe tibble

7
推荐指数
1
解决办法
940
查看次数