Я хочу преобразовать векторы с плотной искрой в отдельные столбцы с индексом в Scala? Надеюсь на помощь, пожалуйста ~ ~ 1001 *
У меня есть датафрейм после minMaxScaler:
+---+--------+--------------------+---------------------+
| id|category|minMaxScalerFeatures|scaledFeatures_output|
+---+--------+--------------------+---------------------+
| 0| 66| [0.0,66.0]| [0.0,0.0]|
| 1| 98| [1.0,98.0]| [0.5,1.0]|
| 2| 90| [2.0,90.0]| [1.0,0.75]|
+---+--------+--------------------+---------------------+
Я хочу получить значение после скейлера с их индексом, например шаблон "index: value", который Тип строки:
+---+--------+--------------------+-----------------------+
| id|category|minMaxScalerFeatures|scaledFeatures_output |
+---+--------+--------------------+-----------------------+
| 0| 66| [0.0,66.0]| 0:0.0,1:0.0|
| 1| 98| [1.0,98.0]| 0:0.5,1:1.0|
| 2| 90| [2.0,90.0]| 0:1.0,1:0.75|
+---+--------+--------------------+-----------------------+
Код для генерации данных:
import org.apache.spark.ml.feature._
import org.apache.spark.sql.functions.udf
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.functions._
val df_1 = Seq((0, 66),(1, 98),(2, 90)).toDF("id", "category")
val minMax_columns = Array("id", "category")
val assembler = new VectorAssembler()
.setInputCols(minMax_columns)
.setOutputCol("minMaxScalerFeatures")
val scaler = new MinMaxScaler()
.setInputCol("minMaxScalerFeatures")
.setOutputCol("scaledFeatures_output")
val dataset = assembler.transform(df_1)
val scalerModel = scaler.fit(dataset)
val scaledData = scalerModel.transform(dataset)
Большое спасибо ~:)