2016-08-10 97 views
0

DecisionTreeClassifier方法我要使用此代码:使用CategoricalFeaturesInfo与星火

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方法。我不能使用这种方法,因为它接受的参数不同于我所拥有的参数...我真的希望能够使用具有正确处理的分类特征的DecisionTreeClassifier。

感谢您的帮助!

回答

1

你混合其中采取不同的方法来分类数据的两个不同的API:

  • RDD基于o.a.s.mllib它通过传递categoricalFeaturesInfo地图提供了所需的元数据。
  • DatasetDataFrameo.a.s.ml它正在使用列元数据来确定变量类型。如果您正确使用ML变压器来创建功能,应该自动为您处理,否则您将不得不登录provide metadata manually
+0

谢谢。但是,我没有看到哪个ML变压器会为我自动处理。如果您能指出我的意见,我会接受您的回复并将其+1! – user3553070

+0

这完全取决于你的管道。几乎每个ML转换器都有特定的语义,并会在模式上设置某种类型的元数据。你只需要意识到这一点,并记住管道应该反映你的数据的语义。 SO恕我直言,详情很广泛。你可以在这里找到一些信息(https://github.com/awesome-spark/spark-gotchas/blob/master/06_data_preparation.md)(免责声明:我是合着者),但这只是一个提示冰山。 – zero323

+0

对不起,在这里问这个,但你有想法如何显示与字符串类别,而不是索引类别的决策树?谢谢。 – user3553070