我有分类和连续功能的混合。我已将所有分类变量编入索引,并使用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如何知道差异。我在这里错过了什么? 代码似乎工作并给出了相当好的结果,但我有一种预感,我在这里做错了。
答案 0 :(得分:1)
Spark使用MaxBins
指定要素是分类还是连续的。如果不同值的数量< = MaxBins
,则它是分类的。否则,连续。有关更多信息,请查看Spark的文档:decision tree