将DataFrame密集化为libsvm格式

时间:2018-08-21 09:10:57

标签: python pandas scikit-learn libsvm

你们知道将密集的分类数据帧格式化为一种热编码的libsvm格式的任何干净方法吗?

让我们看看玩具示例:

df:

userId  movieId  rating 
0     1       2         5
1     1       29        3 
2     1       32        2 
3     1       47        3
4     1       50        2

我想将其转换为“ pseudo-libsvm”文件:

5 userId_1: 1 movieId_2: 1
3 userId_1: 1 movieId_29: 1
2 userId_1: 1 movieId_32: 1
3 userId_1: 1 movieId_47: 1
2 userId_1: 1 movieId_50: 1

可以转换为libsvm文件,例如:

5 1: 1 2: 1
3 1: 1 3: 1
2 1: 1 4: 1
3 1: 1 5: 1
2 1: 1 6: 1

最简单的答案是先使用一种热编码,然后转储svmlight文件,但是dump_svmlight_file方法会将稀疏矩阵转换为密集矩阵,并为大型数据集造成内存问题。

我还考虑过“ hacky”解决方案,例如创建标准的libsvm文件,然后对该文件进行文本操作,但是我宁愿做一些更语义化的事情。

谢谢

0 个答案:

没有答案