src/main/java/weka/classifiers/trees/RandomForestPMMLProducer.java
private static int buildNumericNode(RandomTree tree, Attribute attribute, RandomTree.Tree node, int nodeId, Node parentPMMLNode) {
        SimplePredicate predicateLo = new SimplePredicate(new FieldName(attribute.name()), SimplePredicate.Operator.LESS_THAN).withValue(String.valueOf(node.m_SplitPoint));
        SimplePredicate predicateHi = new SimplePredicate(new FieldName(attribute.name()), SimplePredicate.Operator.GREATER_OR_EQUAL).withValue(String.valueOf(node.m_SplitPoint));

        Node nodeLo = new Node().withId(String.valueOf(++nodeId));
        nodeLo.withPredicate(predicateLo);

        nodeId = buildTreeNode(tree, node.m_Successors[0], nodeId, nodeLo);

        Node nodeHi = new Node().withId(String.valueOf(++nodeId));
        nodeHi.withPredicate(predicateHi);

        nodeId = buildTreeNode(tree, node.m_Successors[1], nodeId, nodeHi);

        // Training proportion extension.
        nodeLo.withExtensions(new Extension().withName(TRAINING_PROPORTION_ELEMENT).withValue(String.valueOf(node.m_Prop[0])));
        nodeHi.withExtensions(new Extension().withName(TRAINING_PROPORTION_ELEMENT).withValue(String.valueOf(node.m_Prop[1])));

        parentPMMLNode.withNodes(nodeLo, nodeHi);

        return nodeId;
    }
private static int buildNumericNode(RandomTree tree, Attribute attribute, RandomTree.Tree node, int nodeId, Node parentPMMLNode) {
        SimplePredicate predicateLo = new SimplePredicate(new FieldName(attribute.name()), SimplePredicate.Operator.LESS_THAN).withValue(String.valueOf(node.m_SplitPoint));
        SimplePredicate predicateHi = new SimplePredicate(new FieldName(attribute.name()), SimplePredicate.Operator.GREATER_OR_EQUAL).withValue(String.valueOf(node.m_SplitPoint));

        Node nodeLo = new Node().withId(String.valueOf(++nodeId));
        nodeLo.withPredicate(predicateLo);

        nodeId = buildTreeNode(tree, node.m_Successors[0], nodeId, nodeLo);

        Node nodeHi = new Node().withId(String.valueOf(++nodeId));
        nodeHi.withPredicate(predicateHi);

        nodeId = buildTreeNode(tree, node.m_Successors[1], nodeId, nodeHi);

        // Training proportion extension.
        nodeLo.withExtensions(new Extension().withName(TRAINING_PROPORTION_ELEMENT).withValue(String.valueOf(node.m_Prop[0])));
        nodeHi.withExtensions(new Extension().withName(TRAINING_PROPORTION_ELEMENT).withValue(String.valueOf(node.m_Prop[1])));

        parentPMMLNode.withNodes(nodeLo, nodeHi);

        return nodeId;
    }
Builds the {@link org.dmg.pmml.Node PMML Node} for a numeric attribute.
<p/>
In PMML these nodes are represented having two children, each with a predicate that checks the node's split point.
<p/>
For example, consider a numeric attribute, named "numericAttribute", with a split point of 2.5 and two leaf nodes. In PMML this translates to:
<pre>
{@code
<Node id="2" score="1">
<SimplePredicate field="numericAttribute" operator="lessThan" value="2.5"/>
</Node>
<Node id="3" score="0">
<SimplePredicate field="numericAttribute" operator="greaterOrEqual" value="2.5"/>
</Node>
}
</pre>

@param tree           The {@link weka.classifiers.trees.RandomTree Weka RandomTree} being converted to a {@link org.dmg.pmml.PMML TreeModel}.
@param attribute      The {@link weka.core.Attribute} to which the node to build refers to.
@param node           The {@link weka.classifiers.trees.RandomTree.Tree Weka RandomTree node} we are converting to PMML.
@param nodeId         The Id to give to the generted {@link org.dmg.pmml.Node PMML Node}.
@param parentPMMLNode The parent {@link org.dmg.pmml.Node PMML Node}.
@return The incremented Id given to recursively created {@link org.dmg.pmml.Node PMML Nodes}.