2015-06-09 50 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你有没有偶然发现任何优雅的解决方案? –

相关问题