对不起,说来话长,但说来话长。:)
我正在使用 Python 的 h2o 库来构建决策树并从中提取决策规则。我正在使用一些数据进行训练,其中标签获得 TRUE 和 FALSE 值。我的最终目标是提取树的重要路径(叶子),其中 TRUE 案例的数量显着超过 FALSE 案例的数量。
treemodel=H2OGradientBoostingEstimator(ntrees = 3, max_depth = maxDepth, distribution="bernoulli")
treemodel.train(x=somedata.names[1:],y=somelabel.names[0], training_frame=somedata)
dtree = H2OTree(model = treemodel, tree_number = 0, tree_class = False)
def predict_leaf_node_assignment(self, test_data, type="Path"):
if not isinstance(test_data, h2o.H2OFrame): raise ValueError("test_data
must be an instance of H2OFrame")
assert_is_type(type, None, Enum("Path", "Node_ID"))
j = h2o.api("POST /3/Predictions/models/%s/frames/%s" % (self.model_id,
test_data.frame_id),
data={"leaf_node_assignment": True, "leaf_node_assignment_type":
type})
return h2o.get_frame(j["predictions_frame"]["name"])
dfResLabH2O.leafs = predict_leaf_node_assignment( dtree,test_data=dfResLabH2O , type="Path")
在 scikit-learn 中有一个选项可以使用tree.values. 我知道 h2o 没有这样的选择。取而代之的是,在 h2o 中有一个选项可以返回对叶子的预测。
当我运行时dtree.predictions,我得到了非常奇怪的结果:
dtree.predictions
Out[32]: [0.0, -0.020934915, 0.0832189, -0.0151052615, -0.13453846, -0.0039859135, 0.2931017, 0.0836743, -0.008562919, -0.12405087, -0.02181114, 0.06444048, -0.01736593, 0.13912177, 0.10727943]***
我的问题(有人已经问过了,但到目前为止还没有给出明确的答案)
负面预测是什么意思?我希望得到 TRUE 到 ALL 或 FALSE 到 ALL 的比例 p,其中 0<=p<=1。我的模型有什么问题吗?我在 scikit-learn 中运行它,可以指出某些重要的路径并提取规则。
对于正值:是 TRUE 到 ALL 还是 False 到 ALL 比例?当我提到 Class=False 时,我猜它是如此 FALSE,但我不确定。
是否有任何方法或解决方案可以让 h20 树以类似于 scikit-learn 提供的方式分别揭示 TRUE 和 FALSE 情况下某个叶子的样本大小和 [n1,n2]?
我在一些论坛中发现了一个函数 def predict_leaf_node_assignment 旨在预测数据集并返回叶节点分配(仅适用于基于树的模型),但它不返回任何输出,我找不到任何示例如何实现它。
底线:我希望能够提取叶子的样本大小值并提取到它的特定路径,实现 [n1,n2] 或有效比例。
我将不胜感激任何帮助和建议。谢谢你。