我只是在将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)
提前致谢。
答案 0 :(得分:1)
VectorIndexer
将一列矢量类型作为输入,但是,听起来你有一个包含字符串的列。在这种情况下,我建议您使用StringIndexer
和OneHotEncoder
。
StringIndexer
将标签的字符串列带到标签索引列(双精度)。然后,OneHotEncoder
会将此列转换为代表每个类别的多个列,以用作分类功能。
之后,所有这些功能都可以组合成一个VectorAssembler
的矢量。我建议使用管道将所有阶段与分类器放在一起。
Here是不同可用功能转换的文档,以及它们如何工作的示例。