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|
    +---+---+-----+-----+
  • 相关阅读:
    经典javascript
    大话prototype
    DataTable使用方法总结
    实验四 Web服务器1socket编程
    2.4 OpenEuler中C语言中的函数调用测试
    20191323王予涵第13章学习笔记
    20191323王予涵第十三章学习笔记
    2.5 OpenEuler 中C与汇编的混合编程
    个人贡献
    20191323王予涵第十二章学习笔记
  • 原文地址:https://www.cnblogs.com/asker009/p/12208916.html
Copyright © 2011-2022 走看看