我试图使用h2o训练决策树模型。我知道在h2o中没有特定的决策树库。但是,h2o有一个随机森林的实现。我们可以通过调整随机森林的某些输入参数来实现h2o中的决策树吗?因为我们可以在Scikit模块(一种流行的机器学习python库)中做到这一点
参考链接:为什么具有一棵树的随机林比决策树分类器要好得多?
在scikit中,代码如下所示
RandomForestClassifier(n_estimators=1, max_features=None, bootstrap=False)
我们在h2o中有这个代码的等价物吗?
您可以使用H2O的随机林(H2ORandomForestEstimator
),设置ntrees=1
,以便它只构建一棵树,将mtries
设置为数据集中的特征数(即列),并将sample\u rate=1
。将mtries
设置为数据集中的特征数量意味着algo将在决策树的每个级别从所有特征中随机取样。
下面是有关mtry
的更多信息:http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/mtries.html
为了补充Lauren的答案:基于PUBDEV-4324-在H2O中将决策树作为独立的算法公开,DRF和GBM都可以在GBM稍微简单的情况下完成这项工作:
titanic_1tree = h2o.gbm(x = predictors, y = response,
training_frame = titanicHex,
ntrees = 1, min_rows = 1, sample_rate = 1,
col_sample_rate = 1,
max_depth = 5,
seed = 1)
这将在titanic数据集上创建一个决策树,最大深度为5个拆分(max_depth=5)(可在此处获得:https://s3.amazonaws.com/h2o-public-test-data/smalldata/gbm_test/titanic.csv)
从3.22版开始。0.1(Xia)可以从H2O模型中提取树结构:
titanicH2oTree = h2o.getModelTree(model = titanic_1tree, tree_number = 1)