I have a simple PMML file that I would like to PUT
to a scoring server. Here is the curl
call:
curl -X PUT --data-binary @DecisionTreeIris.pmml -H "Content-type: text/xml" http://localhost:8080/openscoring/model/DecisionTreeIris
Here is the PMML file:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PMML xmlns="http://www.dmg.org/PMML-4_1" version="4.1">
<Header copyright="Copyright (c) 2013 Vfed" description="RPart Decision Tree Model">
<Extension extender="Rattle/PMML" name="user" value="Vfed"/>
<Application name="Rattle/PMML" version="1.2.34r27"/>
<Timestamp>2013-05-15 22:02:28</Timestamp>
</Header>
<DataDictionary numberOfFields="5">
<DataField name="Species" optype="categorical" dataType="string">
<Value value="setosa"/>
<Value value="versicolor"/>
<Value value="virginica"/>
</DataField>
<DataField name="Sepal.Length" optype="continuous" dataType="double"/>
<DataField name="Sepal.Width" optype="continuous" dataType="double"/>
<DataField name="Petal.Length" optype="continuous" dataType="double"/>
<DataField name="Petal.Width" optype="continuous" dataType="double"/>
</DataDictionary>
<TreeModel modelName="RPart_Model" functionName="classification" algorithmName="rpart" missingValueStrategy="defaultChild" splitCharacteristic="binarySplit">
<MiningSchema>
<MiningField name="Species" usageType="predicted"/>
<MiningField name="Sepal.Length" usageType="active"/>
<MiningField name="Sepal.Width" usageType="active"/>
<MiningField name="Petal.Length" usageType="active"/>
<MiningField name="Petal.Width" usageType="active"/>
</MiningSchema>
<Output>
<OutputField name="Predicted_Species" optype="categorical" dataType="string" feature="predictedValue"/>
<OutputField name="Probability_setosa" optype="continuous" dataType="double" feature="probability" value="setosa"/>
<OutputField name="Probability_versicolor" optype="continuous" dataType="double" feature="probability" value="versicolor"/>
<OutputField name="Probability_virginica" optype="continuous" dataType="double" feature="probability" value="virginica"/>
<!-- Custom output field -->
<OutputField name="Node_Id" optype="categorical" dataType="string" feature="entityId"/>
</Output>
<Node id="1" score="setosa" recordCount="150.0" defaultChild="3">
<True/>
<ScoreDistribution value="setosa" recordCount="50.0" confidence="0.333333333333333"/>
<ScoreDistribution value="versicolor" recordCount="50.0" confidence="0.333333333333333"/>
<ScoreDistribution value="virginica" recordCount="50.0" confidence="0.333333333333333"/>
<Node id="2" score="setosa" recordCount="50.0">
<CompoundPredicate booleanOperator="surrogate">
<SimplePredicate field="Petal.Length" operator="lessThan" value="2.45"/>
<SimplePredicate field="Petal.Width" operator="lessThan" value="0.8"/>
<SimplePredicate field="Sepal.Length" operator="lessThan" value="5.45"/>
<SimplePredicate field="Sepal.Width" operator="greaterOrEqual" value="3.35"/>
</CompoundPredicate>
<ScoreDistribution value="setosa" recordCount="50.0" confidence="1.0"/>
<ScoreDistribution value="versicolor" recordCount="0.0" confidence="0.0"/>
<ScoreDistribution value="virginica" recordCount="0.0" confidence="0.0"/>
</Node>
<Node id="3" score="versicolor" recordCount="100.0" defaultChild="7">
<CompoundPredicate booleanOperator="surrogate">
<SimplePredicate field="Petal.Length" operator="greaterOrEqual" value="2.45"/>
<SimplePredicate field="Petal.Width" operator="greaterOrEqual" value="0.8"/>
<SimplePredicate field="Sepal.Length" operator="greaterOrEqual" value="5.45"/>
<SimplePredicate field="Sepal.Width" operator="lessThan" value="3.35"/>
</CompoundPredicate>
<ScoreDistribution value="setosa" recordCount="0.0" confidence="0.0"/>
<ScoreDistribution value="versicolor" recordCount="50.0" confidence="0.5"/>
<ScoreDistribution value="virginica" recordCount="50.0" confidence="0.5"/>
<Node id="6" score="versicolor" recordCount="54.0">
<CompoundPredicate booleanOperator="surrogate">
<SimplePredicate field="Petal.Width" operator="lessThan" value="1.75"/>
<SimplePredicate field="Petal.Length" operator="lessThan" value="4.75"/>
<SimplePredicate field="Sepal.Length" operator="lessThan" value="6.15"/>
<SimplePredicate field="Sepal.Width" operator="lessThan" value="2.95"/>
</CompoundPredicate>
<ScoreDistribution value="setosa" recordCount="0.0" confidence="0.0"/>
<ScoreDistribution value="versicolor" recordCount="49.0" confidence="0.907407407407407"/>
<ScoreDistribution value="virginica" recordCount="5.0" confidence="0.0925925925925926"/>
</Node>
<Node id="7" score="virginica" recordCount="46.0">
<CompoundPredicate booleanOperator="surrogate">
<SimplePredicate field="Petal.Width" operator="greaterOrEqual" value="1.75"/>
<SimplePredicate field="Petal.Length" operator="greaterOrEqual" value="4.75"/>
<SimplePredicate field="Sepal.Length" operator="greaterOrEqual" value="6.15"/>
<SimplePredicate field="Sepal.Width" operator="greaterOrEqual" value="2.95"/>
</CompoundPredicate>
<ScoreDistribution value="setosa" recordCount="0.0" confidence="0.0"/>
<ScoreDistribution value="versicolor" recordCount="1.0" confidence="0.0217391304347826"/>
<ScoreDistribution value="virginica" recordCount="45.0" confidence="0.978260869565217"/>
</Node>
</Node>
</Node>
</TreeModel>
</PMML>
Not sure that it matters but I am using the Openscoring PMML scoring server.