您当前的位置: 首页 > 

宝哥大数据

暂无认证

  • 1浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

向量-索引变换(VectorIndexer)

宝哥大数据 发布时间:2019-05-31 23:32:35 ,浏览量:1

VectorIndexer

  VectorIndexer解决向量数据集中的类别特征索引。它可以自动识别哪些特征是类别型的,并且将原始值转换为类别索引。它的处理流程如下:

​ 1.获得一个向量类型的输入以及maxCategories参数。

​ 2.基于不同特征值的数量来识别哪些特征需要被类别化,其中最多maxCategories个特征需要被类别化。

​ 3.对于每一个类别特征计算0-based(从0开始)类别索引。

​ 4.对类别特征进行索引然后将原始特征值转换为索引。

  索引后的类别特征可以帮助决策树等算法恰当的处理类别型特征,并得到较好结果。

  在下面的例子中,我们读入一个数据集,然后使用VectorIndexer来决定哪些特征需要被作为类别特征,将类别特征转换为他们的索引。

package org.apache.spark.examples.ml

import org.apache.spark.ml.feature.VectorIndexer
import org.apache.spark.sql.SparkSession

object VectorIndexerExample {
    def main(args: Array[String]): Unit = {
        val spark = SparkSession
            .builder
            .master("local[*]")
            .appName("VectorIndexerExample")
            .getOrCreate()

        val data = spark.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt")

        val indexer = new VectorIndexer()
            .setInputCol("features")
            .setOutputCol("indexed")
            .setMaxCategories(10)

        val indexerModel = indexer.fit(data)

        val categoricalFeatures: Set[Int] = indexerModel.categoryMaps.keys.toSet
        println(s"Chose ${categoricalFeatures.size} " +
            s"categorical features: ${categoricalFeatures.mkString(", ")}")

        // Create new column "indexed" with categorical values transformed to indices
        val indexedData = indexerModel.transform(data)
        indexedData.show()

        spark.stop()
    }
}

关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0405s