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]|
    +-------------------------+-----------------------+

  • 相关阅读:
    树上点对统计poj1741(树的点分治)
    hdu5115(区间dp)
    bestcoder Round#52 1001(最短路+状压dp)
    lightoj1038(期望dp)
    模线性方程组
    hdu2089 数位dp
    poj2955括号匹配 区间DP
    poj1417 带权并查集 + 背包 + 记录路径
    poj1984 带权并查集(向量处理)
    zoj3261 并查集离线处理
  • 原文地址:https://www.cnblogs.com/soyo/p/7763845.html
Copyright © 2011-2022 走看看