2015-06-09 46 views
3

我想僅使用每個LabeledPoint中的一部分特徵在RDD [LabeledPoint]上訓練分類器(既快速調整模型,又包含每個LabeledPoint,例如不是特徵的ID或評估指標)。我搜索了文檔,並找不到指定應包含或忽略哪些列的方法。代碼如下,我正在使用Spark和MLLib 1.3.1,Scala 2.10.4。Spark MLLib如何在訓練分類器時忽略要素

如果無法排除特定功能,那麼在訓練期間將忽略每個數據點的ID都會有所幫助。任何幫助表示讚賞!

val numClasses = 2 
val categoricalFeaturesInfo = Map[Int, Int](5 -> 2) 
val numTrees = 100 
val featureSubsetStrategy = "auto" 
val impurity = "gini" 
val maxDepth = 6 
val maxBins = 20 
val model = RandomForest.trainClassifier(trainingData, numClasses, categoricalFeaturesInfo, numTrees, featureSubsetStrategy, impurity, maxDepth, maxBins) 

回答

0

想要在構建模型之前選擇一個特徵的子集,或者想要爲RandomForest分類器在迭代之間使用一些自定義策略嗎?

如果是第一種情況 - 您可以在構建模型之前將trainingData與地圖轉換進行轉換。

有關功能選擇的示例,請參閱MLlib - Feature Extraction and Transformation中的功能選擇部分。

+3

感謝您的回覆。這不完全是 - 我希望能夠在每個數據點中包含未用於培訓的功能。例如,在訓練分類器後(包括一個ID標籤能夠識別單個數據點(無需使用包含的特徵單獨匹配每個數據點,這感覺像一個非常笨拙的解決方案)。 – user1109152

+1

@ user1109152你有沒有偶然發現任何優雅的解決方案? –

相關問題