我正在使用该函数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) 我想要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没有提到如何实现这一目标.
我需要使用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获取这些信息吗?谢谢
我正在使用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因子图上添加分组变量省略号,其中还包括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) 代码:
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)
有什么问题?
在进行回归或分类时,预处理数据的正确(或更好)方法是什么?
以上哪一项更正确,还是预处理数据的"标准化"方式?"标准化"是指标准化,线性缩放或其他一些技术.
regression classification machine-learning normalization pca
我有一个大型数据集的多维数据(132维).
我是执行数据挖掘的初学者,我想使用Matlab应用主成分分析.但是,我已经看到网上有很多功能,但我不明白它们应该如何应用.
基本上,我想应用PCA并从我的数据中获取特征向量及其相应的特征值.
在此步骤之后,我希望能够基于所获得的特征向量的选择来对我的数据进行重建.
我可以手动执行此操作,但我想知道是否有任何可以执行此操作的预定义函数,因为它们应该已经过优化.
我的初始数据如下:size(x) = [33800 132].所以基本上我有132功能(维度)和33800数据点.我想在这个数据集上执行PCA.
任何帮助或提示都可以.
我princomp在R中用来执行PCA.我的数据矩阵很大(10K x 10K,每个值最多4个小数点).在Xeon 2.27 GHz处理器上需要大约3.5小时和~6.5 GB的物理内存.
由于我只想要前两个组件,有没有更快的方法呢?
更新:
除了速度之外,还有一种内存有效的方法吗?
用于计算前两个组件需要大约2小时和~6.3 GB的物理内存svd(,2,).
我一直在阅读关于稀疏PCA的论文,其中包括:http: //stats.stanford.edu/~imj/WEBLIST/AsYetUnpub/sparse.pdf
并且它表明,如果你有n数据点,每个数据都用p功能表示,那么,PCA的复杂性就是O(min(p^3,n^3)).
有人可以解释一下/为什么?
pca ×10
python ×3
r ×3
scikit-learn ×2
apache-spark ×1
data-mining ×1
eigenvalue ×1
eigenvector ×1
ggbiplot ×1
matlab ×1
matplotlib ×1
matrix ×1
na ×1
plot ×1
pyspark ×1
regression ×1
variance ×1