你们知道将密集的分类数据帧格式化为一种热编码的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文件,然后对该文件进行文本操作,但是我宁愿做一些更语义化的事情。
谢谢