我正在尝试使用h2o训练决策树模型。我知道在h2o中不存在用于决策树的特定库。但是,h2o实现了随机森林 H2ORandomForestEstimator 。我们可以通过调整随机森林的某些输入参数来实现h2o中的决策树吗?因为我们可以在scikit模块(一个流行的机器学习python库)中做到这一点
参考链接: Why is Random Forest with a single tree much better than a Decision Tree classifier?
在scikit中代码看起来像这样
RandomForestClassifier(n_estimators=1, max_features=None, bootstrap=False)
我们在h2o中有这个代码的等价物吗?
答案 0 :(得分:4)
你可以使用H2O的随机森林(H2ORandomForestEstimator
),设置ntrees=1
以便它只构建一棵树,将mtries
设置为特征数量(即列)你有数据集和sample_rate =1
。将mtries
设置为数据集中的要素数意味着算法将从决策树中每个级别的所有要素中随机抽样。
以下是有关mtries
:http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/mtries.html
答案 1 :(得分:1)
要补充劳伦的答案:基于PUBDEV-4324 - Expose Decision Tree as a stand-alone algo in 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)
可在泰坦尼克号数据集(可在此处使用:https://s3.amazonaws.com/h2o-public-test-data/smalldata/gbm_test/titanic.csv)上创建最多5层深度(最大深度= 5)的决策树
从3.22.0.1(Xia)版本开始,可以从H2O模型中提取树结构:
titanicH2oTree = h2o.getModelTree(model = titanic_1tree, tree_number = 1)