我只是使用Standard Scaler來標(biāo)準(zhǔn)化ML應(yīng)用程序的功能。選擇縮放的特征后,我想將其轉(zhuǎn)換回Doubles的數(shù)據(jù)幀,盡管矢量的長度是任意的。我知道如何通過使用特定的3個功能來做到這一點myDF.map{case Row(v: Vector) => (v(0), v(1), v(2))}.toDF("f1", "f2", "f3")但不適用于任意數(shù)量的功能。是否有捷徑可尋?例:val testDF = sc.parallelize(List(Vectors.dense(5D, 6D, 7D), Vectors.dense(8D, 9D, 10D), Vectors.dense(11D, 12D, 13D))).map(Tuple1(_)).toDF("scaledFeatures")val myColumnNames = List("f1", "f2", "f3")// val finalDF = DataFrame[f1: Double, f2: Double, f3: Double] 編輯我發(fā)現(xiàn)了在創(chuàng)建數(shù)據(jù)框時如何解壓縮到列名的方法,但是仍然無法將向量轉(zhuǎn)換為創(chuàng)建數(shù)據(jù)框所需的序列:finalDF = testDF.map{case Row(v: Vector) => v.toArray.toSeq /* <= this errors */}.toDF(List("f1", "f2", "f3"): _*)
Spark Scala:如何將Dataframe [vector]轉(zhuǎn)換為DataFrame [f1
莫回?zé)o
2019-10-12 13:47:08