我有一个大约百万行和 3 列的熊猫数据框。这些列有 3 种不同的数据类型。NumberOfFollowers 是数值数据类型,UserName 是分类数据类型,Embeddings 是分类集类型。
df:
Index NumberOfFollowers UserName Embeddings Target Variable
0 15 name1 [0.5 0.3 0.2] 0
1 4 name2 [0.4 0.2 0.4] 1
2 8 name3 [0.5 0.5 0.0] 0
3 10 name1 [0.1 0.0 0.9] 0
... ... .... ... ..
我想将此熊猫数据框转换为 LibSVM 输入格式。
期望的输出:
0 0:15 4:1 1:0.5 2:0.3 3:0.2
1 0:4 5:1 1:0.4 2:0.2 3:0.4
0 0:8 6:1 1:0.5 2:0.5 3:0.0
0 0:10 4:1 1:0.1 2:0.0 3:0.9
...
我发现的一种解决方案是使用:
https://scikit-learn.org/stable/modules/generated/sklearn.datasets.dump_svmlight_file.html
它将输入作为 NumPy 数组或稀疏矩阵。
UserName 具有一百万个唯一值,因此在此列上调用 pd.get_dummies 并将其存储为密集的 NumPy 数组不是解决方案,并且不适合内存。
所以,我知道它可以使用稀疏矩阵来完成,但是,我不知道如何将上述混合数据类型的数据转换为稀疏矩阵,然后使用 sklearn.datasets.dump_svmlight_file.html。
实际上,我有很多混合数据类型的列,我需要将它们转换为 libSVM 格式。但是,所有列都属于上述三种类型之一。
提前感谢您对如何解决上述问题的任何想法。