spark dataframe有三列col1,col2,col3,对col1和col2进行minmax归一化处理,给出scala代码
时间: 2024-01-26 10:02:45 浏览: 126
spark的scala练习代码(里面都有详细注解)
可以使用Spark的MinMaxScaler进行归一化处理。具体实现的Scala代码如下:
```
import org.apache.spark.ml.feature.MinMaxScaler
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.sql.functions.col
val assembler = new VectorAssembler()
.setInputCols(Array("col1", "col2"))
.setOutputCol("features")
val scaler = new MinMaxScaler()
.setInputCol("features")
.setOutputCol("scaledFeatures")
val df = ... // 读取数据到DataFrame df 中
val processedDf = assembler.transform(df)
.select(col("col3"), col("scaledFeatures"))
val scaledDf = scaler.fit(processedDf).transform(processedDf)
.select(col("col3"), col("scaledFeatures").getItem(0).as("col1"), col("scaledFeatures").getItem(1).as("col2"))
```
上述代码先使用VectorAssembler将需要进行归一化处理的两列数据组合成一个特征向量,然后使用MinMaxScaler对该特征向量进行归一化处理。最终结果中包含第三列和归一化后的col1、col2列。
阅读全文