apache-spark - 什么是 StringIndexer 、 VectorIndexer 以及如何使用它们?

标签 apache-spark dataset spark-dataframe

Dataset<Row> dataFrame = ... ;   
StringIndexerModel labelIndexer = new StringIndexer()
               .setInputCol("label")
               .setOutputCol("indexedLabel")
               .fit(dataFrame);

 VectorIndexerModel featureIndexer = new VectorIndexer()
               .setInputCol("s")
               .setOutputCol("indexedFeatures")
               .setMaxCategories(4)
               .fit(dataFrame);
IndexToString labelConverter = new IndexToString()
               .setInputCol("prediction")
               .setOutputCol("predictedLabel")
               .setLabels(labelIndexer.labels());

什么是 StringIndexer、VectorIndexer、IndexToString,它们之间有什么区别?我应该如何以及何时使用它们?

最佳答案

我只知道这两个:

StringIndexer 和 VectorIndexer

字符串索引器:

  • 将单个列转换为索引列(类似于 R 中的因子列)

  • 向量索引器:
  • 用于索引 featuresCol 列中的分类预测变量。请记住 featuresCol 是由向量组成的单列(请参阅 featuresCol 和 labelCol)。每行都是一个向量,其中包含来自每个预测变量的值。
  • 如果您有字符串类型的预测器,您首先需要使用 StringIndexer 对这些列进行索引。 featuresCol 包含向量,而向量不包含字符串值。

  • 看看这里的例子:https://mingchen0919.github.io/learning-apache-spark/StringIndexer-and-VectorIndexer.html

    关于apache-spark - 什么是 StringIndexer 、 VectorIndexer 以及如何使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44195535/

    相关文章:

    apache-spark - 压缩 Spark 输出文件

    algorithm - 使用 spark 的笛卡尔积

    delphi - 最初为什么创建 TDataSource?

    c# - 我如何将数据集的表/对象列表发送到客户端应用程序?

    hadoop - EMR 引导操作何时运行

    Cassandra 内部存储

    machine-learning - 我在哪里可以找到 ImageNet VID 数据集?

    scala - 从 Spark 错误更新到 CosmosDB

    apache-spark - 如何在Spark SQL中为表添加增量列ID

    scala - 如何使用复杂的嵌套结构修改Spark Dataframe?