大型数据集上的 PCA
PCA on large dataset
我有一个包含 6 个输入变量(温度、压力、流速等)的大型数据集,用于提供产量、纯度和转化率等输出。
总共有大约 47600 个实例,这些都在 excel 电子表格中。
我对这些数据应用了人工神经网络和随机森林算法,并获得了预测图和准确度指标。 (在 Python)
随机森林模型具有赋予输入变量重要性的特征。
我现在想对该数据执行 PCA,首先与随机森林结果进行比较,并获得有关我的输入数据如何相互作用以提供输出的更多信息。
我看过一些 youtube 视频和教程来了解 PCA,但是他们使用的数据与我的数据完全不同。
下面是我的数据片段。前 6 列是输入,后 3 列是输出。
我如何使用 PCA 对此进行分析?我设法在 python 中绘制了它,但是情节非常繁忙,几乎没有提供太多信息。
欢迎任何帮助或提示!也许是不同的分析工具?我不介意使用 Python 或 Matlab
谢谢:)
我建议使用 OpenTURNS 中的 KarhunenLoeveSVDAlgorithm
。它提供了 4 种随机 SVD 算法的实现。限制是要计算的奇异值的数量必须事先设置。
为了启用该算法,我们必须在ResourceMap
中设置KarhunenLoeveSVDAlgorithm-UseRandomSVD
键。然后 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。
我有一个包含 6 个输入变量(温度、压力、流速等)的大型数据集,用于提供产量、纯度和转化率等输出。 总共有大约 47600 个实例,这些都在 excel 电子表格中。 我对这些数据应用了人工神经网络和随机森林算法,并获得了预测图和准确度指标。 (在 Python) 随机森林模型具有赋予输入变量重要性的特征。 我现在想对该数据执行 PCA,首先与随机森林结果进行比较,并获得有关我的输入数据如何相互作用以提供输出的更多信息。 我看过一些 youtube 视频和教程来了解 PCA,但是他们使用的数据与我的数据完全不同。
下面是我的数据片段。前 6 列是输入,后 3 列是输出。
我如何使用 PCA 对此进行分析?我设法在 python 中绘制了它,但是情节非常繁忙,几乎没有提供太多信息。
欢迎任何帮助或提示!也许是不同的分析工具?我不介意使用 Python 或 Matlab
谢谢:)
我建议使用 OpenTURNS 中的 KarhunenLoeveSVDAlgorithm
。它提供了 4 种随机 SVD 算法的实现。限制是要计算的奇异值的数量必须事先设置。
为了启用该算法,我们必须在ResourceMap
中设置KarhunenLoeveSVDAlgorithm-UseRandomSVD
键。然后 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。