查找大型数据集的本征函数-太多的内存

时间:2019-07-15 14:46:14

标签: python ram covariance hpc eigenvalue

我有一个Python脚本来确定我的数据集中每个样本的协方差和本征函数,但它需要太多RAM。我应该采取什么方法?我是否应该考虑使用其他编程语言,例如C?

我可以访问大学的HPC,并且以前我曾经在较小的数据集上成功运行过该脚本。问题在于,这次我的数据集更大(2.6TB),每个样本也更大(1.3GB)。我设法尝试使用256GB RAM(我可以要求的最大数量)运行此脚本,但是失败了。

此脚本使用Numpy和SciPy查找我的数据集的协方差和本征函数。

def analysis(meanX, meanY, result):
    # Finding the fluctuation of the data 
    fluX = []
    fluY = []
    for i in result:
        df = pd.read_csv(i)
        Vx = df['Vx'].values - meanX
        fluX = np.append(fluX, Vx)
        Vy = df['Vy '].values - meanY
        fluY = np.append(fluY, Vy)
    flu = []
    flu = np.append(fluX, fluY)
    n_snapshots = len(result)
    n_data = len(Vx)
    flu = np.reshape(flu, (n_snapshots, n_data*2)) 
    cov = np.cov(flu.T)
    eigenvalue, eigenvector = scipy_eigenvalue(cov)
    return eigenvalue, eigenvector

def scipy_eigenvalue(cov):
    eigenvalue, eigenvector = eigsh(cov, k=10)
    sum = np.sum(eigenvalue)
    return eigenvalue, eigenvector

但是该脚本占用了过多的RAM,我希望能听到有关如何减少RAM需求的想法。

0 个答案:

没有答案