在Spark中使用CategoricalFeaturesInfo和DecisionTreeClassifier方法

时间:2016-08-10 19:20:20

标签: apache-spark apache-spark-mllib decision-tree apache-spark-ml

我必须使用此代码:

val dt = new DecisionTreeClassifier().setLabelCol("indexedLabel").setFeaturesCol("indexedFeatures").setImpurity(impurity).setMaxBins(maxBins).setMaxDepth(maxDepth);

我需要添加分类功能信息,以便决策树不会将indexedCategoricalFeatures视为数字。我有这张地图:

val categoricalFeaturesInfo = Map(143 -> 126, 144 -> 5, 145 -> 216, 146 -> 100, 147 -> 14, 148 -> 8, 149 -> 19, 150 -> 7);

但它仅适用于DecisionTree.trainClassifier方法。我不能使用这种方法,因为它接受的参数不同于我拥有的参数...我真的希望能够使用DecisionTreeClassifie r来正确处理分类特征。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您正在混合两种不同的API,这些API采用不同的分类数据方法:

  • RDD基于o.a.s.mllib,通过传递categoricalFeaturesInfo地图提供所需的元数据。
  • DatasetDataFrameo.a.s.ml使用列元数据来确定变量类型。如果您正确使用ML变换器来创建功能,则应自动为您处理,否则您必须provide metadata manually