zoukankan      html  css  js  c++  java
  • Spark Imputer 归因估算器 补全缺失值

    1、概念

    Imputer估计器使用缺失值所在列的平均值或中位数来完成数据集中的缺失值。输入列应为DoubleType或FloatType。

    当前,Imputer不支持分类特征,并且可能为包含分类特征的列创建不正确的值。

    Imputer可以通过.setMissingValue(custom_value)插入“ NaN”以外的自定义值。例如,.setMissingValue(0)将重算所有出现的(0)。 请注意,输入列中的所有空值都被视为丢失,因此也会被估算

    2、code

    package com.home.spark.ml
    
    import org.apache.spark.SparkConf
    import org.apache.spark.ml.feature.Imputer
    import org.apache.spark.sql.SparkSession
    
    /**
      * @Author: xu.dm
      * @Date: 2020/1/18 11:46
      * @Version: 1.0
      * @Description: 实验性的功能
      * 用于使用缺失值所在列的平均值或中位数来完成缺失值的归因估算器。 输入列应为DoubleType或FloatType。
      * 当前,Imputer不支持分类功能(SPARK-15041),并且可能为分类功能创建了错误的值。
      * 注意,均值/中值是在滤除缺失值之后计算的。
      * 输入列中的所有Null值都被视为丢失,因此也会被估算。 为了计算中位数,使用DataFrameStatFunctions.approxQuantile的相对误差为0.001。
      **/
    object Ex_Imputer {
      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 df = spark.createDataFrame(Seq(
          (1.0, Double.NaN),
          (2.0, Double.NaN),
          (Double.NaN, 3.0),
          (4.0, 4.0),
          (5.0, 5.0)
        )).toDF("a", "b")
    
        val imputer = new Imputer()
          .setInputCols(Array("a", "b"))
          .setOutputCols(Array("out_a", "out_b"))
          .setMissingValue(Double.NaN)
          .setStrategy()
    
        val model = imputer.fit(df)
        model.transform(df).show()
    
        spark.stop()
      }
    }

    +---+---+-----+-----+
    |  a|  b|out_a|out_b|
    +---+---+-----+-----+
    |1.0|NaN|  1.0|  4.0|
    |2.0|NaN|  2.0|  4.0|
    |NaN|3.0|  3.0|  3.0|
    |4.0|4.0|  4.0|  4.0|
    |5.0|5.0|  5.0|  5.0|
    +---+---+-----+-----+
  • 相关阅读:
    二项分布 正太分布 关系 隶莫佛-拉普拉斯定理的推广 列维-林德伯格定理
    lint (software)
    eslint
    Lazy freeing of keys 对数据的额异步 同步操作 Redis 4.0 微信小程序
    XML-RPC JSON-RPC RPC是实现思路
    Multitier architecture
    Messaging Patterns for Event-Driven Microservices
    替换模板视频图片的原理
    Understanding When to use RabbitMQ or Apache Kafka Kafka RabbitMQ 性能对比
    RabbitMQ Connector
  • 原文地址:https://www.cnblogs.com/asker009/p/12208916.html
Copyright © 2011-2022 走看看