繁体   English   中英

什么是StringIndexer,VectorIndexer,以及如何使用它们?

[英]What is StringIndexer , VectorIndexer, and how to use them?

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,它们之间有什么区别? 我应该如何以及何时使用它们?

字符串索引器 - 如果您希望机器学习算法将列标识为分类变量,或者想要将文本数据转换为保持分类上下文的数字数据,请使用它。

e,g将天数(星期一,星期二......)转换为数字表示。

Vector Indexer-如果我们不知道传入的数据类型,请使用此方法。 因此,我们将使用Vector Indexer将分类和非分类数据区分开来的逻辑。

e,g - 来自第三方API的数据,其中数据被隐藏并直接摄取到训练模型。

索引器到字符串 - 正好与String索引器相反,如果使用String Indexer对最终输出列进行索引,则使用此方法,现在我们要将其数字表示转换回textual,以便更好地理解结果。

我只知道那两个:

StringIndexer和VectorIndexer

StringIndexer:

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

VectorIndexer:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM