hkg*_*166 5 python numpy pandas scikit-learn
我有两个变量 (y,x) 的数据:80,000 个组的 7 年每周数据(364 周)。我需要按组贬低数据,并对 y 进行回归(x 加需要创建的 8 个虚拟变量)。有364*80,000*10,即大约3000万个数据点。我“借”了服务器上的一个帐户,发现回归至少需要 144GB 内存。我通常无法访问该服务器,而且我的计算机只有 24GB 内存。
我正在考虑将回归分解为 8 部分,而不是 inv(X'X)X'Y。回归 1 使用前 10,000 个组的数据。这给出了 X1'X1 和 X1'y1 回归 2 使用组 10,001 到 20,000 的数据并给出 X2'X2、X2'y2 等等,其中 X_j =x_j+ group_j 的虚拟值。
那么我的估计将是 inv(X1'X1+..X8'X8)(X1y1+ ... X8y8)。
问题是如何有效地读取数据来做到这一点。数据位于 csv 文件中,未按组组织。我正在考虑读取整个数据集并将其转储到一个有组织的新 csv 文件中。然后每次读取10000*360行,重复8次。
我的问题是
有没有更有效的方法来进行这种回归?
有没有办法绕过创建新的 csv 文件?如果我必须创建一个新的数据文件,第一个格式是什么?(从未使用过pytable或h5py,愿意考虑)
如果我调整 LASSO 来执行 OLS 而不是正则化回归,scikit-learn 会比 sm.OLS 更有效吗?
如有建议,我们将不胜感激。提前致谢。
也许不是一个明确的答案,但一些评论:
inv(X'X)X'Y
。numpy.save()
将是 CSV 的更简单、更快的替代方案。 归档时间: |
|
查看次数: |
2016 次 |
最近记录: |