Ho un RDD con una tupla di valori (String, sparsevector) e voglio creare un dataframe utilizzando il RDD. Per ottenere un (etichetta: stringa, caratteristiche: vettore) DataFrame che è lo schema richiesto dalla maggior parte delle librerie dell'algoritmo ml. So che può essere fatto perché la libreria HashingTF ml restituisce un vettore quando viene fornita una colonna delle caratteristiche di un dataframe .Come faccio a convertire un RDD con una colonna sparsevector ad un dataframe con una colonna come vettore
temp_df = sqlContext.createDataFrame(temp_rdd, StructType([
StructField("label", DoubleType(), False),
StructField("tokens", ArrayType(StringType()), False)
]))
#assumming there is an RDD (double,array(strings))
hashingTF = HashingTF(numFeatures=COMBINATIONS, inputCol="tokens", outputCol="features")
ndf = hashingTF.transform(temp_df)
ndf.printSchema()
#outputs
#root
#|-- label: double (nullable = false)
#|-- tokens: array (nullable = false)
#| |-- element: string (containsNull = true)
#|-- features: vector (nullable = true)
Quindi la mia domanda è, posso in qualche modo avere un RDD di (String, sparsevector) convertirlo in un dataframe di (String, vettoriale). Ho provato con il solito sqlContext.createDataFrame
ma non c'è lo DataType che si adatta alle esigenze che ho.
df = sqlContext.createDataFrame(rdd,StructType([
StructField("label" , StringType(),True),
StructField("features" , ?Type(),True)
]))
Wow, cercavo questo da secoli! quasi un grido di felicità:,) +1 –
Questo ha funzionato! Grazie mille! puoi dirmi dove si trova la documentazione? Non riesco a trovare alcun VectorUDT su linalg apache spark Docs –
@OrangelMarquez forse è richiesta una richiesta di pull –