python - 在 Python 中从大型数据帧创建稀疏矩阵

标签 python out-of-memory linear-regression sparse-matrix

我尝试在回归中使用稀疏矩阵,因为添加虚拟变量后有超过 40,000 个变量。为了做到这一点,我相信我需要为模型提供一个稀疏矩阵。但是,使用此处找到的代码无法将我的 pandas 数据框转换为矩阵:

Convert Pandas dataframe to Sparse Numpy Matrix directly

这是因为数据集太大,我遇到了内存错误。以下是我如何通过运行以下命令来复制问题的示例:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(0,40000,size=(1000000, 4)), columns=list('ABCD'))
df = pd.get_dummies(df,columns=['D'],sparse=True,drop_first=True)
df = df.values

我最终希望能够将数据帧(300 万条记录,49,000 列)转换为矩阵,因为我怀疑我可以创建一个稀疏矩阵并将其用于我的回归。这在较小的子集上效果很好,但我最终需要测试整个数据集。上面的例子立即产生一个“MemoryError”,所以我怀疑这是Python的一些限制,但我希望有一个解决方法。

最佳答案

稀疏矩阵是一种代价高昂的操作。使用 Spicy,创建大型稀疏矩阵非常困难,并且您的系统内存可能不支持。

我建议使用 Spark 库。这样你的数据集就会运行在不同的集群(RDD)上。下面是示例代码,

从 pyspark.mllib.linalg 导入向量 稀疏 = Vectors.sparse(3, [0, 2], [1.0, 3.0])

希望对你有帮助。如果您还有任何疑问,请告诉我,我很乐意为您提供帮助。

关于python - 在 Python 中从大型数据帧创建稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55526135/

相关文章:

python - 确定字符串中字符重复的长度和位置

go - 运行时:内存不足但仍有内存

java - 运行Hadoop时如何避免OutOfMemoryException?

python - 在 Python 中实现线性回归

r - lme4::lmer报告 “fixed-effect model matrix is rank deficient”,我是否需要修复以及如何解决?

python - R 和 Python 中线性回归的差异

python - 按 FITS 文件中多列中的值聚合表行

python - 如何将项目添加到 OrderedDict

python - 使用 PyQt5 在文本框中打印输出语句

node.js - nodejs http response.write : is it possible out-of-memory?