问题描述
我有一个包含文本数据和数字特征的数据框。我已经对文本数据进行了矢量化处理,并计划将其与其余数字数据连接起来,以便在机器学习算法上运行。
我已经使用TIDF对文本数据进行了矢量化处理,如下所示:
from sklearn.feature_extraction.text import TfidfVectorizer
vect = TfidfVectorizer(max_features=10000)
text_vect = vect.fit_transform(myDataframe['text_column'])
text_vect_df = pd.DataFrame.sparse.from_spmatrix(text_vect)
text_vect_df.shape:250000 x 9300
我已将text_vect_df转换为csv文件,并使用vaex将其转换为hdf5,如下所示。 Vaex必须与hdf5格式兼容。
text_vaex_hdf5 = vaex.from_csv('text_vectorized.csv',convert=True,chunk_size=5_000_000)
text_vectorized.csv
是4GB。vaex.from_csv()
占用了太多时间,并且内存崩溃了(8GB RAM)。
我在Jupyterhub(带有外部GPU)中尝试使用text_vect_df.shape 200000 x 9300.
的形状,它分块下载,每个块有7GB的空间,读取该文件会花费太多时间。
text_vectorized.csv_chunk0.hdf5
7.51 GB
text_vectorized.csv_chunk1.hdf5
7.51 GB
text_vectorized.csv_chunk2.hdf5
2.5 GB
问题1:hdf5文件如何大于原始的csv5文件?不应该更小吗? 问题2:如果较小的大小失败/崩溃,如何存储950000 x 10000大小的数据帧?
我了解了vaex,它看起来真的很酷,因为计算在几秒钟内发生。我很乐意继续进行这项工作,但是遇到了麻烦。我已经尝试过了。不像Vaex那样酷。
已经尝试过的解决方案:
- Pandas的to_hdf不应用于存储稀疏矩阵,因为https://vaex.readthedocs.io/en/latest/faq.html
当使用pandas .to_hdf方法时,输出的HDF5文件具有基于行的格式。另一方面,Vaex希望使用基于列的HDF5文件
- 没有dask或vaex,运行KNN,SVM或任何ML算法时内存就会崩溃。
- 苦苦尝试,没有运气,工作人员在客户端本地群集中被杀死。
- 有了Vaex,无法前进
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)