zoukankan      html  css  js  c++  java
  • 特征变化--->特征向量中部分特征到类别索引的转换(VectorIndexer)

    VectorIndexer:

    倘若所有特征都已经被组织在一个向量中,又想对其中某些单个分量进行处理时,Spark ML提供了VectorIndexer类来解决向量数据集中的类别性特征转换。

    通过为其提供maxCategories超参数,它可以自动识别哪些特征是类别型的,并且将原始值转换为类别索引。它基于不同特征值的数量来识别哪些特征需要被类别化,那些取值可能性最多不超过maxCategories的特征需要会被认为是类别型的。

    package Spark_MLlib
    
    import org.apache.spark.ml.feature.VectorIndexer
    import org.apache.spark.ml.linalg.Vectors
    import org.apache.spark.sql.SparkSession
    
    
    object 特征变换_VectorIndexer {
      val spark=SparkSession.builder().master("local[2]").appName("IndexToString").getOrCreate()
      import spark.implicits._
    
      def main(args: Array[String]): Unit = {
        val data=Seq(
          Vectors.dense(-1,1,1,8,56),
          Vectors.dense(-1,3,-1,-9,88),
          Vectors.dense(0,5,1,10,96),
          Vectors.dense(0,5,1,11,589),
          Vectors.dense(0,5,1,11,688)
    
        )
        val df=spark.createDataFrame(data.map(Tuple1.apply)).toDF("features")
        val indexer= new VectorIndexer().setInputCol("features").setOutputCol("indexed").setMaxCategories(4)  //那些取值可能性最多不超过maxCategories的特征会被认为是类别型的,进而将原始值转换为类别索引
        val indexer_model=indexer.fit(df)
        val categoricalFeatures= indexer_model.categoryMaps.keys.toSet
        println(s"Chose ${categoricalFeatures.size} categorical features: " + categoricalFeatures.mkString(", "))
       val indexed=indexer_model.transform(df)
        indexed.show(false)
    
      }
    }

    结果:

    Chose 4 categorical features: 0, 1, 2, 3

    +-------------------------+-----------------------+
    |features                 |indexed                |
    +-------------------------+-----------------------+
    |[-1.0,1.0,1.0,8.0,56.0]  |[1.0,0.0,1.0,1.0,56.0] |
    |[-1.0,3.0,-1.0,-9.0,88.0]|[1.0,1.0,0.0,0.0,88.0] |
    |[0.0,5.0,1.0,10.0,96.0]  |[0.0,2.0,1.0,2.0,96.0] |
    |[0.0,5.0,1.0,11.0,589.0] |[0.0,2.0,1.0,3.0,589.0]|
    |[0.0,5.0,1.0,11.0,688.0] |[0.0,2.0,1.0,3.0,688.0]|
    +-------------------------+-----------------------+

  • 相关阅读:
    sqlhelper使用指南
    大三学长带我学习JAVA。作业1. 第1讲.Java.SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行 大三学长带我学习JAVA。作业1.
    pku1201 Intervals
    hdu 1364 king
    pku 3268 Silver Cow Party
    pku 3169 Layout
    hdu 2680 Choose the best route
    hdu 2983
    pku 1716 Integer Intervals
    pku 2387 Til the Cows Come Home
  • 原文地址:https://www.cnblogs.com/soyo/p/7763845.html
Copyright © 2011-2022 走看看