zoukankan      html  css  js  c++  java
  • 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               |
    +---+-------+------------------+
  • 相关阅读:
    内存-程序运行的空间
    数据在内存中是这样存储的(二进制形式存储)
    从编写源代码到程序在内存中运行的全过程解析
    QT开发工具
    Linux中Too many open files 问题分析和解决
    TCP端口状态说明ESTABLISHED、TIME_WAIT
    HttpClient当HTTP连接的时候出现大量CLOSE_WAIT连接
    缓存穿透、击穿、雪崩
    Http长连接和Keep-Alive以及Tcp的Keepalive
    防止表单重复提交
  • 原文地址:https://www.cnblogs.com/asker009/p/12204961.html
Copyright © 2011-2022 走看看