2016-07-07 3 views
2

Раньше я VectorAssembler(), чтобы объединить некоторые OneHotEncoded категориальные особенности ... Мой кадр данных выглядел так:Понимание Выход VectorAssembler --- Спарк

| 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])] 

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

ответ

3

Этот выход не относится к VectorAssembler. Это просто строковое представление o.a.s.mllib.linalg.SparseVector с:

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

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

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

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