将所有名义变量转换为pyspark中的分类变量

时间:2017-10-10 06:28:59

标签: python apache-spark pyspark apache-spark-mllib pyspark-sql

我只是在将PySpark数据框中的所有String类型变量转换为分类变量的方法之后,因此我可以在数据框上运行决策树。由于资源限制,我不能使用pandas并且只能使用PySpark库。我已将VectorIndexer标识为可能的解决方案,但是,我不了解如何转换documentation所说的所有String类型列。

有人可以帮我解释如何做到这一点的语法吗?我是这样的:

featureIndexer = VectorIndexer(inputCol=<list of input columns>, outputCol=<list of output columns>, maxCategories=10).fit(df)

或让VectorIndexer弄清楚哪些需要对其自己进行矢量化,文档似乎表明它可以做到。

featureIndexer = VectorIndexer(df, maxCategories=10).fit(df)

提前致谢。

1 个答案:

答案 0 :(得分:1)

VectorIndexer将一列矢量类型作为输入,但是,听起来你有一个包含字符串的列。在这种情况下,我建议您使用StringIndexerOneHotEncoder

StringIndexer将标签的字符串列带到标签索引列(双精度)。然后,OneHotEncoder会将此列转换为代表每个类别的多个列,以用作分类功能。

之后,所有这些功能都可以组合成一个VectorAssembler的矢量。我建议使用管道将所有阶段与分类器放在一起。

Here是不同可用功能转换的文档,以及它们如何工作的示例。