首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型数据集上的PCA

大型数据集上的PCA
EN

Stack Overflow用户
提问于 2020-04-26 16:10:17
回答 1查看 170关注 0票数 1

我有一个大的数据集,包括6个输入变量(温度,压力,流量等),以提供一个输出,如产量,纯度和转换。总共有大约47600个实例,这些都在excel电子表格中。将人工神经网络和随机森林算法应用于该数据,得到了预测图和精度指标。(在Python中)随机森林模型具有一个赋予输入变量重要性的特性。现在,我想对这些数据执行PCA,首先将其与随机森林结果进行比较,并获得关于输入数据如何相互交互以给出输出的更多信息。我已经看了一些youtube视频和教程,让我的头脑围绕PCA,但他们使用的数据与我的完全不同。

下面是我的数据片段。前6列是输入,最后3列是输出。

如何使用PCA来分析这个问题?我在python中成功地绘制了它,但是这个情节非常繁忙,并且几乎没有给出太多的信息。

欢迎任何帮助或提示!也许是另一种分析工具?我不介意使用Python或Matlab

谢谢您:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-29 21:41:28

我建议在KarhunenLoeveSVDAlgorithm中使用OpenTURNS。它提供了4种随机SVD算法的实现。约束条件是必须事先设置要计算的奇异值的数目。

为了启用该算法,我们必须在KarhunenLoeveSVDAlgorithm-UseRandomSVD中设置ResourceMap键。然后,KarhunenLoeveSVDAlgorithm-RandomSVDMaximumRank键设置要计算的奇异值数(默认情况下,它等于1000)。

提供了两种实现:

  • Nathan,Per-Gunnar,Joel .热带.寻找具有随机性的结构:构造近似矩阵分解的概率算法,
  • Nathan,Per-Gunnar,Yoel和Mark。大数据集主成分分析的一种算法.

这些算法可以使用KarhunenLoeveSVDAlgorithm-RandomSVDVariant密钥进行选择。

在下面的例子中,我用AbsoluteExponential协方差模型从高斯过程中模拟了一个大的过程样本。

代码语言:javascript
复制
import openturns as ot
mesh = ot.IntervalMesher([10]*2).build(ot.Interval([-1.0]*2, [1.0]*2))
s = 0.01
model = ot.AbsoluteExponential([1.0]*2)
sampleSize = 100000
sample = ot.GaussianProcess(model, mesh).getSample(sampleSize)

然后采用随机SVD算法:

代码语言:javascript
复制
ot.ResourceMap_SetAsBool('KarhunenLoeveSVDAlgorithm-UseRandomSVD', True)
algorithm = ot.KarhunenLoeveSVDAlgorithm(sample, s)
algorithm.run()
result = algorithm.getResult()

result对象包含流程的Karhunen-Loève分解。这对应于有规则网格的PCA (以及相同的权重)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61443981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档