Spark Binarizer 连续型数据处理之二值化
1、概念
假设有个需求,我得根据年龄来进行物品推荐,把50以上的人分为老年,50以下分为非老年人,那么我们根据二值化可以很简单的把50以上的定为1,50以下的定为0。
这样就方便我们后续的推荐了。Binarizer就是根据阈值进行二值化,大于阈值的为1.0,小于等于阈值的为0.0
2、code
package com.home.spark.ml import org.apache.spark.SparkConf import org.apache.spark.ml.feature.Binarizer import org.apache.spark.sql.SparkSession /** * @Description: * 二进制化是将数字特征阈值化为二进制(0/1)特征的过程。 * Binarizer采用公共参数inputCol和outputCol以及二进制化的阈值。 * 大于阈值的特征值将二值化为1.0;等于或小于阈值的值二值化为0.0。 * InputCol支持Vector和Double类型。 **/ object Ex_Binarizer { def main(args: Array[String]): Unit = { val conf: SparkConf = new SparkConf(true).setMaster("local[2]").setAppName("spark ml") val spark = SparkSession.builder().config(conf).getOrCreate() val data = Array((0, 20.0), (1, 30.0), (2, 55.0),(3, 65.0),(4, 50.0)) val dataFrame = spark.createDataFrame(data).toDF("id", "feature") val binarizer = new Binarizer().setInputCol("feature").setOutputCol("binarized_features").setThreshold(50.0) val result = binarizer.transform(dataFrame) result.show(false) spark.stop() } }
+---+-------+------------------+
|id |feature|binarized_features|
+---+-------+------------------+
|0 |20.0 |0.0 |
|1 |30.0 |0.0 |
|2 |55.0 |1.0 |
|3 |65.0 |1.0 |
|4 |50.0 |0.0 |
+---+-------+------------------+