假设我的数据框中有一堆分类字符串列。然后我在下面进行转换:
问题:对于第3步,是否有意义,还是重复工作?我认为第1步已经完成了索引。
答案 0 :(得分:0)
是的,如果您要使用基于Spark树的算法(RandomForestClassifier或GBMClassifier)并且您具有高基数功能,那么这是有意义的。
E.g。 for criteo dataset StringIndexer会将分类列中的值转换为范围1到65000的整数。它会将此值作为NominalAttribute保存在元数据中。然后在RFClassifier中它将extract this from metadata作为分类特征。
对于基于树的算法,您必须指定<{1}} parameter
必须>&gt; = 2且&gt; =任何分类要素中的类别数。
maxBins
参数太高会导致性能下降。要解决此问题,请将maxBins
与VectorIndexer
一起使用。这将仅将具有&lt; 64唯一值的那些变量视为分类变量。