微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从数据帧创建 sparse_matrix?内存错误

如何解决如何从数据帧创建 sparse_matrix?内存错误

我有一个大小为 78,000,000 行 x 14 列的数据框。我想从中得到一个稀疏矩阵用于数据训练。为此,我使用 pd dummies 进行转换。我得到了一个 78,000 行 x 1100 列的数据框。接下来,我创建了一个 lil_matrix 并尝试填充它,但我的内存不足。我有 32 GB 的内存。

请告诉我我该怎么做? 这是我将数据帧转换为 sparse_matrix 的代码

my_arr = lil_matrix(df.shape,dtype=np.uint8)
for i,column in enumerate(df.columns):
    inx = df[column] != 0
    my_arr[np.where(inx),i] = 1

my_arr.tocsr()

更新: scipy.sparse.csr_matrix(df.values) 无效,因为 df.values 占用大量内存,并不能解决我的问题。

更新 2: 我无法添加跟踪,因为当它达到 32 GB 时,内核会重新启动。我可以补充一点,它占用了大量内存,没有足够的 RAM。 enter image description here

更新 3: 昵称 CJR 的用户提出了一个很酷的提示。要将 DataFrame 转换为稀疏矩阵,只需执行以下操作:

Data_frame_csr = pd.get_dummies(Data_frame,columns=[name1,name2 ...,nameN],dummy_na=True,sparse=True).sparse.to_coo().tocsr()

dummy_na - 考虑到等于 Nan 的值(参见文档)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。