2016-08-10 137 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