spark ML决策树如何处理回归问题的连续特征

时间:2017-06-02 15:24:47

标签: java apache-spark machine-learning regression decision-tree

我有分类和连续功能的混合。我已将所有分类变量编入索引,并使用VectorAssembler创建功能列

        StringIndexerModel indexer = new StringIndexer()
                    .setInputCol("categorical")
                    .setOutputCol("categoricalIdx1")
                    .setHandleInvalid("skip").fit(data);
        VectorAssembler assembler = new VectorAssembler()
                    .setInputCols(new String[]{"categoricalIdx1","continuous"})
                    .setOutputCol("features");

        DecisionTreeRegressor dt = new DecisionTreeRegressor()
                                       .setMaxBins(40)
                                       .setMaxDepth(10)
                                       .setFeaturesCol("features")
                                       .setLabelCol("commission")
                                       .setPredictionCol("prediction");

我找不到任何方法来指定哪些功能是分类的,哪些是连续的。由于所有列都已转换为数值,DecisionTreeRegressor如何知道差异。我在这里错过了什么? 代码似乎工作并给出了相当好的结果,但我有一种预感,我在这里做错了。

1 个答案:

答案 0 :(得分:1)

Spark使用MaxBins指定要素是分类还是连续的。如果不同值的数量< = MaxBins,则它是分类的。否则,连续。有关更多信息,请查看Spark的文档:decision tree