大型数据集上的PCA

问题描述 投票:0回答:1

我有一个由6个输入变量(温度,压力,流速等)组成的大日期集,以提供诸如产量,纯度和转化率的输出。总共大约有47600个实例,而这些都在excel电子表格中。我已在此数据上应用了人工神经网络和随机森林算法,并获得了预测的图和准确性指标。 (在Python中)随机森林模型具有赋予输入变量重要性的功能。我现在想对该数据执行PCA,以首先与随机森林结果进行比较,以及获得有关输入数据如何相互交互以提供输出的更多信息。我看过一些youtube视频和教程来了解PCA,但是它们使用的数据与我的截然不同。

下面是我的数据的一小段。前6列为输入,后3列为输出。enter image description here

如何使用PCA对此进行分析?我已经设法在python中绘制它,但是绘制非常忙,几乎没有提供太多信息。

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

谢谢:)

python matlab pca analysis
1个回答
0
投票

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

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

提供了两个实现:

  • Nathan Halko,Per-Gunnar Martinsson,Joel A. Tropp。寻找具有随机性的结构:构建近似矩阵分解的概率算法,
  • Nathan Halko,Per-Gunnar Martisson,Yoel Shkolnisky和Mark Tygert。大数据集主成分分析的算法。

这些算法可以用KarhunenLoeveSVDAlgorithm-RandomSVDVariant键选择。

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

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算法:

ot.ResourceMap_SetAsBool('KarhunenLoeveSVDAlgorithm-UseRandomSVD', True)
algorithm = ot.KarhunenLoeveSVDAlgorithm(sample, s)
algorithm.run()
result = algorithm.getResult()

result对象包含该过程的Karhunen-Loève分解。这对应于具有规则网格(和相等权重)的PCA。

© www.soinside.com 2019 - 2024. All rights reserved.