У меня есть pandas фрейм данных с миллионом строк и 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
... ... .... ... ..
Я хотел бы преобразовать этот pandas фрейм данных во входной формат 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 массив или разреженная матрица.
Имя пользователя имеет миллион уникальных значений, поэтому вызов pd.get_dummies для этого столбца и сохранение его в виде плотного массива NumPy не является решением и не помещается в память.
Итак, я знаю, что это может быть сделано с использованием разреженных матриц, но тогда я не знаю, как преобразовать вышеуказанные данные со смешанными типами данных в разреженную матрицу, а затем использовать sklearn.datasets. dump_svmlight_file. html.
На самом деле у меня много столбцов со смешанными типами данных, и мне нужно преобразовать их в формат libSVM. Но все столбцы относятся к одному из трех указанных выше типов.
Заранее благодарим за любые мысли о том, как решить вышеуказанную проблему.