Я работаю над настройкой категориальных переменных для моделей с искровым ML. Вместо столбца с отдельными категориальными переменными у меня есть столбец с массивом категориальных переменных. См. Пример данных ниже.
(хотя это числа, они представляют категорию).
Мне нужно выделить их в отдельные функции, например, важно сохранить, чтобы # 1, # 3, # 6 и # 7 имели категорию 19, независимо от того, какие другие категории находятся в массиве.
Я мог бы использовать SQL, чтобы вручную определить все категориальные переменные и создать столбец для каждой из них. Но это не кажется элегантным, я думаю, что должен быть лучший способ, чтобы все категории были повернуты к столбцам, а затем обозначены как 1 или 0, которые затем могут быть закодированы в горячем виде. Или мне интересно, есть ли лучший способ подумать о проблеме?
Я использую scala 2.2.0 (и сейчас не могу обновить), поэтому не могу использовать более новые функции массива.
+---------------+----------------+
|id |categorical_code|
+---------------+----------------+
|1 | [19] |
|2 | [87, 19] |
|3 | [18] |
|4 | [96] |
|5 | [18] |
|6 | [111, 22, 19] |
|7 | [161, 19, 18] |
|8 | [12] |
|9 | [170] |
+---------------+----------------+
Требуется вывод (я думаю) что-то вроде:
id,cat_12,cat_18,cat_19,cat_22,cat_87,cat_111,cat_161,cat_170
1,,,1,,,,,
2,,,1,,1,,,
3,,1,,,,,,
4,,,,,,,,
5,,1,,,,,,
6,,,1,1,,1,1,
7,,1,1,,,,,
8,1,,,,,,,1
9,,,,,,,,