Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 回归大数据_Python_Numpy_Pandas_Scikit Learn - Fatal编程技术网

Python 回归大数据

Python 回归大数据,python,numpy,pandas,scikit-learn,Python,Numpy,Pandas,Scikit Learn,我有两个变量(y,x)的数据:80000组7年的每周数据(364周)。 我需要对数据进行分组,并对y进行回归(x加上需要创建的8个虚拟变量)。有364*80000*10个数据点,约3000万个数据点。我在服务器上“借用”了一个帐户,发现回归至少需要144GB的内存。我通常无法访问此服务器,我的计算机只有24GB的ram 我想把回归分解成8个部分,而不是inv(X'X)X'Y。 回归1使用前10000组的数据。这就得到了X1'X1和X1'y1 回归2使用10001到20000组的数据,得出X2'X

我有两个变量(y,x)的数据:80000组7年的每周数据(364周)。 我需要对数据进行分组,并对y进行回归(x加上需要创建的8个虚拟变量)。有364*80000*10个数据点,约3000万个数据点。我在服务器上“借用”了一个帐户,发现回归至少需要144GB的内存。我通常无法访问此服务器,我的计算机只有24GB的ram

我想把回归分解成8个部分,而不是inv(X'X)X'Y。 回归1使用前10000组的数据。这就得到了X1'X1和X1'y1 回归2使用10001到20000组的数据,得出X2'X2,X2'y2 以此类推,其中X_j=X_j+组的假人

那么我的估计是inv(X1'X1+…X8'X8)(X1y1+…X8y8)

问题在于如何高效地读取数据来执行此操作。 数据位于csv文件中,不按组组织。 我想读入整个数据集并将其转储到一个有组织的新csv文件中。然后我每次读10000*360行,重复8次

我的问题是

  • 有没有更有效的方法来进行这种回归

  • 有没有办法绕过创建新的csv文件?如果我必须创建一个新的数据文件,那么第一种格式是什么?(从未使用过pytable或h5py,并愿意考虑)

  • 如果我调整套索做OLS而不是正则化回归,scikit learn会比sm.OLS更有效吗


  • 如有建议,将不胜感激。提前谢谢。

    可能不是一个明确的答案,但有一些评论:

  • 使用矩阵求逆在数值上不是很稳定。标准解决方案,如使用适当的off
    inv(X'X)X'Y
  • 因为最小二乘法是一种线性估计器,所以将数据分块并一步一步地计算结果是没有问题的,这样可以减少所需的RAM。描述了如何将LQ分解为两个块,这两个块可以很容易地推广到更多的块。这项研究就是基于这个想法。对于您的数据大小,您应该记住数值的稳定性
  • Pytables似乎是个好主意,因为它可以处理不适合内存的数据
    numpy.save()

  • 因为它看起来不像能够使用SARK的线性方法()来在AWS或其他服务器上执行回归,所以您可能需要考虑对可用数据执行许多重复的回归(例如100个样本),每次从下一组随机选择的观察值中删除之前样本的观察值,直到没有更多样本为止

    这不仅可以让您了解数据集是否遵循大数定律(您可以对每个样本进行假设检验),而且累积起来,所有样本的平均拟合线可能比整个数据集的OLS拟合更精确


    sm.OLS的一个可能替代方法是使用sklean.linear_model.LinearRegression()运行回归

    计算矩阵逆矩阵的规模不太大,而且在数值上可能不稳定,尤其是当您的特征集接近(或超过)您拥有的训练示例数量时。您可能希望使用梯度下降来计算回归系数。查看Andrew Ng机器学习课程的讲稿第5页:


    谢谢您的评论。由于许可协议的原因,我无法将数据放在aws上。我尝试了很多方法,sklearn的线性回归似乎是目前为止最好的选择。干杯