• 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               |
    +---+-------+------------------+
  • 相关阅读:
    AppCompatActivity、ActionBarActivity、FragmentActivity和Activity的区别
    Android-Async-Http
    如何在Android studio中同时打开多个工程?
    Multi-threading Android Apps for Multi-core Processors – Part 1 of 2
    Performance Tips
    容器生态系统
    Docker生态不会重蹈Hadoop的覆辙
    Docker生态会重蹈Hadoop的覆辙吗?
    国外牛人的五个Kubernetes学习建议
    Kubernetes基本概念
  • 原文地址:https://www.cnblogs.com/asker009/p/12204961.html
Copyright © 2020-2023  润新知