gpt4 book ai didi

python - 生成 numpy.MultivariateNormal 时出现 MemoryError

转载 作者:行者123 更新时间:2023-12-01 09:25:46 25 4
gpt4 key购买 nike

我有一个包含 707 列和 3947 行的数据集。由此,我计算出一个 707x707 协方差矩阵,以及分别使用 numpy.cov 和 pandas.df.mean 的数组或行平均值。

当我使用这个协方差矩阵和一组方法尝试使用 numpy 生成随机多元正常玩具数据集时,我得到了 MemoryError。

如何生成具有这些规范的如此大的随机数据集而不出现此错误?

编辑:

这是我的堆栈跟踪:

Traceback (most recent call last):

File "<ipython-input-28-701051dd6b16>", line 1, in <module>
runfile('/project/home17/whb17/Documents/project2/scripts/mltest/covex.py', wdir='/project/home17/whb17/Documents/project2/scripts/mltest')

File "/project/soft/linux64/anaconda/Anaconda3-5.0.1-Linux-x86_64/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 705, in runfile
execfile(filename, namespace)

File "/project/soft/linux64/anaconda/Anaconda3-5.0.1-Linux-x86_64/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "/project/home17/whb17/Documents/project2/scripts/mltest/covex.py", line 36, in <module>
d2_x, d2_y = multivariate_normal(means, X_cov, [n_cols, n_rows], check_valid='ignore').T

File "mtrand.pyx", line 4538, in mtrand.RandomState.multivariate_normal

MemoryError

编辑2:

这是导致它的代码:

X = pd.read_csv('../../data/mesa/MESA.csv', sep=',', header=None, index_col=0)

n_cols, n_rows = X.shape

means = X.mean(axis=0).tolist()

X_cov = np.cov(X.T)

d2_x, d2_y = multivariate_normal(means, X_cov, [n_cols, n_rows]).T

最佳答案

从您的代码来看,您很可能误解了 multivariate_normal 的使用在

d2_x, d2_y = multivariate_normal(means, X_cov, [n_cols, n_rows]).T

这里的第一个和第二个参数是均值和协方差。第三个参数是矩阵的形状,其中每个单元格都应该是随机矩阵的实例。这不是转置成对的东西,而且几乎肯定不是你想要的。

举个例子,如果 X_cov 的尺寸为 707 X 707,则结果的尺寸为 707 X 707 X 707 X n_rows

要生成玩具数据集,您应该使用

multivariate_normal(means, X_cov, n_rows)

与您的原始问题(第一次编辑之前)相比,总体结果应该小大约 1/1250000。

关于python - 生成 numpy.MultivariateNormal 时出现 MemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50412642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com