Понимание представления векторного столбца в Spark SQL

Прежде чем я использовал VectorAssembler () для объединения некоторых категориальных функций OneHotEncoded ... Мой фрейм данных выглядел так:

|  Numerical|  HotEncoded1|   HotEncoded2
|  14460.0|    (44,[5],[1.0])|     (3,[0],[1.0])|
|  14460.0|    (44,[9],[1.0])|     (3,[0],[1.0])|
|  15181.0|    (44,[1],[1.0])|     (3,[0],[1.0])|

Первый столбец представляет собой числовой столбец, а два других столбца представляют преобразованный набор данных для категориальных функций OneHotEncoded. После применения VectorAssembler () мой вывод становится:

[(48,[0,1,9],[14460.0,1.0,1.0])]
[(48,[0,3,25],[12827.0,1.0,1.0])]
[(48,[0,1,18],[12828.0,1.0,1.0])]

Я не уверен в том, что означают эти цифры, и не могу понять смысл этого преобразованного набора данных. Некоторое разъяснение того, что означает этот вывод, было бы здорово!

Ответы на вопрос(1)

Решение Вопроса

VectorAssembler, Это просто строковое представлениеo.a.s.ml.linalg.SparseVector (o.a.s.mllib.linalg.SparseVector в Spark <2.0) с:

ведущее число, представляющее длину векторапервый первый набор чисел в скобках - это список ненулевых индексоввторой набор чисел в скобках представляет собой список значений, соответствующих индексам

Так(48,[0,1,9],[14460.0,1.0,1.0]) представляет вектор длиной 48 с тремя ненулевыми записями:

14460,0 на 0-й позиции1,0 на 1-й позиции1,0 на 9-й позиции

То же самое относится и кHotEncoded1 а такжеHotEncoded2 а такжеNumerical это просто скаляр Не видяметаданные и конструкторы не могут сказать много, но закодированные переменные должны иметь либо 44 и 3, либо 45 и 4 уровня (в зависимости отdropLast параметр).

Ваш ответ на вопрос