标签: pca

即使允许NA,R函数prcomp也会以NA的值失败

我正在使用该函数prcomp来计算前两个主要组件.但是,我的数据有一些NA值,因此函数会抛出错误.即使在帮助文件中提到,定义的na.action似乎也不起作用?prcomp

这是我的例子:

d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))

prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)

d$V1[5] <- NA
d$V2[7] <- NA

prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)
Run Code Online (Sandbox Code Playgroud)

我正在使用适用于Mac OS X的最新R版本2.15.1.

prcomp失败后有人能看出原因吗?

这是我的新例子:

d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))

result <- prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)

result$x

d$V1[5] <- NA

result <- prcomp(~V1+V2, data=d, center = TRUE, …
Run Code Online (Sandbox Code Playgroud)

r pca na

23
推荐指数
2
解决办法
3万
查看次数

使用sklearn进行因子加载

我想要python中各个变量和主要组件之间的相关性.我在sklearn中使用PCA.我不明白在分解数据后如何实现加载矩阵?我的代码在这里.

iris = load_iris()
data, y = iris.data, iris.target
pca = PCA(n_components=2)
transformed_data = pca.fit(data).transform(data)
eigenValues = pca.explained_variance_ratio_
Run Code Online (Sandbox Code Playgroud)

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html没有提到如何实现这一目标.

python pca scikit-learn

23
推荐指数
3
解决办法
2万
查看次数

使用scikit-learn PCA查找具有最高方差的维度

我需要使用pca来识别具有特定数据集的最大方差的维度.我正在使用scikit-learn的pca来完成它,但是我无法从pca方法的输出中识别出具有最高方差的数据的组成部分.请记住,我不想消除这些维度,只能识别它们.

我的数据被组织为一个包含150行数据的矩阵,每行包含4个维度.我这样做:

pca = sklearn.decomposition.PCA()
pca.fit(data_matrix)
Run Code Online (Sandbox Code Playgroud)

当我打印pca.explained_variance_ratio_时,它会输出从最高到最低排序的方差比数组,但它不会告诉我它们对应的数据中的哪个维度(我已尝试更改矩阵中列的顺序,以及得到的方差比数组是相同的).

打印pca.components_给了我一个4x4矩阵(我把组件的原始数量留作 pca的参数)和一些我无法理解的含义的值...根据scikit的文档,它们应该是具有最大方差的组件(特征向量可能是?),但没有这些值所指的维度的标志.

转换数据也没有帮助,因为维度的改变方式我真的不知道它们最初是哪一个.

有什么方法可以用scikit的pca获取这些信息吗?谢谢

python variance pca scikit-learn

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

Pyspark和PCA:如何提取此PCA的特征向量?如何计算他们解释的方差?

我正在使用pyspark(使用库)减少Spark DataFrame带有PCA模型的维度,spark ml如下所示:

pca = PCA(k=3, inputCol="features", outputCol="pca_features")
model = pca.fit(data)
Run Code Online (Sandbox Code Playgroud)

在哪里data是一个Spark DataFrame实验室,其中features一个DenseVector是3维:

data.take(1)
Row(features=DenseVector([0.4536,-0.43218, 0.9876]), label=u'class1')
Run Code Online (Sandbox Code Playgroud)

拟合后,我转换数据:

transformed = model.transform(data)
transformed.first()
Row(features=DenseVector([0.4536,-0.43218, 0.9876]), label=u'class1', pca_features=DenseVector([-0.33256, 0.8668, 0.625]))
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何提取此PCA的特征向量?如何计算他们解释的方差?

pca apache-spark apache-spark-sql pyspark apache-spark-ml

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

将椭圆添加到主成分分析(PCA)图中

我无法在单个站点PCA因子图上添加分组变量省略号,其中还包括PCA可变因子箭头.

我的代码:

prin_comp<-rda(data[,2:9], scale=TRUE)
pca_scores<-scores(prin_comp)

#sites=individual site PC1 & PC2 scores, Waterbody=Row Grouping Variable.
#site scores in the PCA plot are stratified by Waterbody type.

plot(pca_scores$sites[,1],
     pca_scores$sites[,2],
     pch=21,
     bg=point_colors[data$Waterbody],
     xlim=c(-2,2), 
     ylim=c(-2,2),
     xlab=x_axis_text,
     ylab=y_axis_text)

#species=column PCA1 & PCA2 Response variables
arrows(0,0,pca_scores$species[,1],pca_scores$species[,2],lwd=1,length=0.2)

#I want to draw 'Waterbody' Grouping Variable ellipses that encompass completely, 
# their appropriate individual site scores (this is to visualise total error/variance).
Run Code Online (Sandbox Code Playgroud)

我试图使用dataellipse,plotellipses和ellipse函数,但无济于事.无知就是赢得了这一点.如果我没有提供足够的信息,请告诉我.

数据(log10转换):

dput(data)

structure(list(Waterbody = structure(c(4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, …
Run Code Online (Sandbox Code Playgroud)

plot r pca ggbiplot

20
推荐指数
2
解决办法
2万
查看次数

提升LinAlgError("SVD没有收敛")LinAlgError:SVD没有收敛于matplotlib pca确定

代码:

import numpy
from matplotlib.mlab import PCA
file_name = "store1_pca_matrix.txt"
ori_data = numpy.loadtxt(file_name,dtype='float', comments='#', delimiter=None,                 converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
result = PCA(ori_data)
Run Code Online (Sandbox Code Playgroud)

这是我的代码.虽然我的输入矩阵没有nan和inf,但我确实得到了下面所述的错误.

raise LinAlgError("SVD did not converge") LinAlgError: SVD did not converge
Run Code Online (Sandbox Code Playgroud)

有什么问题?

python matplotlib pca

20
推荐指数
4
解决办法
4万
查看次数

首先是PCA还是标准化?

在进行回归或分类时,预处理数据的正确(或更好)方法是什么?

  1. 规范化数据 - > PCA - >培训
  2. PCA - >标准化PCA输出 - >训练
  3. 规范化数据 - > PCA - >规范化PCA输出 - >训练

以上哪一项更正确,还是预处理数据的"标准化"方式?"标准化"是指标准化,线性缩放或其他一些技术.

regression classification machine-learning normalization pca

19
推荐指数
2
解决办法
2万
查看次数

Matlab - PCA分析和多维数据重建

我有一个大型数据集的多维数据(132维).

我是执行数据挖掘的初学者,我想使用Matlab应用主成分分析.但是,我已经看到网上有很多功能,但我不明白它们应该如何应用.

基本上,我想应用PCA并从我的数据中获取特征向量及其相应的特征值.

在此步骤之后,我希望能够基于所获得的特征向量的选择来对我的数据进行重建.

我可以手动执行此操作,但我想知道是否有任何可以执行此操作的预定义函数,因为它们应该已经过优化.

我的初始数据如下:size(x) = [33800 132].所以基本上我有132功能(维度)和33800数据点.我想在这个数据集上执行PCA.

任何帮助或提示都可以.

matlab data-mining pca

19
推荐指数
2
解决办法
4万
查看次数

计算R中前两个主成分的最快方法是什么?

princomp在R中用来执行PCA.我的数据矩阵很大(10K x 10K,每个值最多4个小数点).在Xeon 2.27 GHz处理器上需要大约3.5小时和~6.5 GB的物理内存.

由于我只想要前两个组件,有没有更快的方法呢?

更新:

除了速度之外,还有一种内存有效的方法吗?

用于计算前两个组件需要大约2小时和~6.3 GB的物理内存svd(,2,).

r eigenvalue eigenvector pca

17
推荐指数
2
解决办法
5790
查看次数

PCA O的复杂程度如何(min(p ^ 3,n ^ 3))?

我一直在阅读关于稀疏PCA的论文,其中包括:http: //stats.stanford.edu/~imj/WEBLIST/AsYetUnpub/sparse.pdf

并且它表明,如果你有n数据点,每个数据都用p功能表示,那么,PCA的复杂性就是O(min(p^3,n^3)).

有人可以解释一下/为什么?

machine-learning matrix time-complexity pca

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