为了账号安全,请及时绑定邮箱和手机立即绑定

大型数据集上的 PCA

大型数据集上的 PCA

阿波罗的战车 2022-10-25 15:11:55
我有一个包含 6 个输入变量(温度、压力、流速等)的大型数据集,以提供产量、纯度和转化率等输出。总共有大约 47600 个实例,这些都在 Excel 电子表格中。我已经在这些数据上应用了人工神经网络和随机森林算法,并获得了预测图和准确度指标。(在 Python 中)随机森林模型具有赋予输入变量重要性的特征。我现在想对这些数据执行 PCA 以首先与随机森林结果进行比较,并获得有关我的输入数据如何相互交互以给出我的输出的更多信息。我看过一些 youtube 视频和教程来了解 PCA,但是他们使用的数据与我的完全不同。下面是我的数据片段。前 6 列是输入,后 3 列是输出。如何使用 PCA 进行分析?我已经设法在 python 中绘制它,但是情节非常繁忙,几乎没有提供太多信息。欢迎任何帮助或提示!也许是不同的分析工具?我不介意使用 Python 或 Matlab谢谢 :)
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

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

为了启用算法,我们必须KarhunenLoeveSVDAlgorithm-UseRandomSVDResourceMap. 然后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。


查看完整回答
反对 回复 2022-10-25
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信