问题描述
按照这篇论文:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7712003/ 我有一个关于如何申请的问题,例如XSLT,修改一个带有随机森林的 PMML 文件以执行以下操作:-
因此,如果我有一个随机森林,其中有 2 棵树,每棵树有 5 个终端叶子,我希望得到输出
一个热编码“t.l”,其中 t=tree id 和 l=leaf id 0.0 0.1 0.2 0.3 0.4 1.0 1.1 1.2 1.3 1.4 1 0 0 0 0 0 1 0 0 0
谢谢
解决方法
如何申请,例如XSLT,修改一个 PMML 文件
为此考虑使用适当的 PMML 库,例如 JPMML-Model。它提供了一个特殊用途的访问者 API,用于遍历和修改 PMML 数据结构。
返回用于预测的叶子id
将以下 OutputField
元素附加到所有 TreeModel/Output
元素:
<OutputField name="id(node)" feature="entityId" dataType="string" optype="categorical"/>
这使用“实体标识符”机制来提取获胜的 Node
元素的标识符。
无需手动标记节点。如果 Node@id
属性缺失,则返回基于 1 的隐式索引。
“个性化”森林中的树木
随机森林模型中的树可以通过 Segment@id
属性进行标识。
例如,下面的 OutputField
元素将返回第七棵决策树的获胜节点的 id:
<OutputField name="id(node,7)" segmentId="7" feature="entityId" dataType="string" optype="categorical"/>