Spark ML VectorAssembler devuelve resultados extraños
Estoy experimentando un comportamiento muy extraño deVectorAssembler
y me preguntaba si alguien más ha visto esto.
Mi escenario es bastante sencillo. Analizo datos de unCSV
archivo donde tengo algún estándarInt
yDouble
campos y también calculo algunas columnas adicionales. Mi función de análisis devuelve esto:
val joined = countPerChannel ++ countPerSource //two arrays of Doubles joined
(label, orderNo, pageNo, Vectors.dense(joinedCounts))
Mi función principal utiliza la función de análisis de esta manera:
val parsedData = rawData.filter(row => row != header).map(parseLine)
val data = sqlContext.createDataFrame(parsedData).toDF("label", "orderNo", "pageNo","joinedCounts")
Entonces uso unVectorAssembler
Me gusta esto:
val assembler = new VectorAssembler()
.setInputCols(Array("orderNo", "pageNo", "joinedCounts"))
.setOutputCol("features")
val assemblerData = assembler.transform(data)
Entonces, cuando imprimo una fila de mis datos antes de que vaya alVectorAssembler
se parece a esto:
[3.2,17.0,15.0,[0.0,0.0,0.0,0.0,3.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,4.0,0.0,0.0,2.0]]
Después de la función de transformación de VectorAssembler, imprimo la misma fila de datos y obtengo esto:
[3.2,(18,[0,1,6,9,14,17],[17.0,15.0,3.0,1.0,4.0,2.0])]
¿Qué diablos está pasando? ¿Qué tiene elVectorAssembler
¿hecho? Revisé todos los cálculos e incluso seguí los ejemplos simples de Spark y no puedo ver qué está mal con mi código. ¿Puedes?