"can't read performance file after writing with PerformanceWriter ?"
Legacy User
New Altair Community Member
Hi,
I have just started testing rapidminer for my own use and when writing some performance output I ran into a problem. I don't seem to be able to read any of the results file generated back into RapidMiner (nor via the GUI or via PerformanceReader).
Any clue?
One example result is here:
I have just started testing rapidminer for my own use and when writing some performance output I ran into a problem. I don't seem to be able to read any of the results file generated back into RapidMiner (nor via the GUI or via PerformanceReader).
Any clue?
One example result is here:
<object-stream>
<PerformanceVector id="1" serialization="custom">
<com.rapidminer.operator.AbstractIOObject>
<default>
<source>Performance</source>
</default>
</com.rapidminer.operator.AbstractIOObject>
<com.rapidminer.operator.ResultObjectAdapter>
<default>
<annotations id="2">
<keyValueMap id="3"/>
</annotations>
</default>
</com.rapidminer.operator.ResultObjectAdapter>
<AverageVector>
<default>
<averagesList id="4">
<kappa id="5" serialization="custom">
<com.rapidminer.operator.ResultObjectAdapter>
<default>
<annotations id="6">
<keyValueMap id="7"/>
</annotations>
</default>
</com.rapidminer.operator.ResultObjectAdapter>
<com.rapidminer.tools.math.Averagable>
<default>
<averageCount>0</averageCount>
<meanSquaredSum>NaN</meanSquaredSum>
<meanSum>NaN</meanSum>
</default>
</com.rapidminer.tools.math.Averagable>
<kappa>
<default>
<type>0</type>
<classNameMap id="8">
<entry>
<string>yes</string>
<int>0</int>
</entry>
<entry>
<string>no</string>
<int>1</int>
</entry>
</classNameMap>
<classNames id="9">
<string>yes</string>
<string>no</string>
</classNames>
<counter id="10">
<double-array id="11">
<double>1.0</double>
<double>0.0</double>
</double-array>
<double-array id="12">
<double>0.0</double>
<double>0.0</double>
</double-array>
</counter>
<labelAttribute class="PolynominalAttribute" id="13" serialization="custom">
<com.rapidminer.example.table.AbstractAttribute>
<default>
<annotations id="14">
<keyValueMap id="15"/>
</annotations>
<attributeDescription id="16">
<name>IBD</name>
<valueType>1</valueType>
<blockType>1</blockType>
<defaultValue>0.0</defaultValue>
<index>5887</index>
</attributeDescription>
<constructionDescription>gensym</constructionDescription>
<statistics class="linked-list" id="17">
<NominalStatistics id="18">
<mode>0</mode>
<maxCounter>1</maxCounter>
<scores id="19">
<long>1</long>
<long>0</long>
</scores>
</NominalStatistics>
<UnknownStatistics id="20">
<unknownCounter>0</unknownCounter>
</UnknownStatistics>
</statistics>
<transformations id="21"/>
</default>
</com.rapidminer.example.table.AbstractAttribute>
<PolynominalAttribute>
<default>
<nominalMapping class="PolynominalMapping" id="22">
<symbolToIndexMap id="23">
<entry>
<string>yes</string>
<int>0</int>
</entry>
<entry>
<string>no</string>
<int>1</int>
</entry>
</symbolToIndexMap>
<indexToSymbolMap id="24">
<string>yes</string>
<string>no</string>
</indexToSymbolMap>
</nominalMapping>
</default>
</PolynominalAttribute>
</labelAttribute>
<predictedLabelAttribute class="PolynominalAttribute" id="25" serialization="custom">
<com.rapidminer.example.table.AbstractAttribute>
<default>
<annotations id="26">
<keyValueMap id="27"/>
</annotations>
<attributeDescription id="28">
<name>prediction(IBD)</name>
<valueType>1</valueType>
<blockType>1</blockType>
<defaultValue>0.0</defaultValue>
<index>5888</index>
</attributeDescription>
<constructionDescription>prediction(IBD)</constructionDescription>
<statistics class="linked-list" id="29">
<NominalStatistics id="30">
<mode>0</mode>
<maxCounter>1</maxCounter>
<scores id="31">
<long>1</long>
<long>0</long>
</scores>
</NominalStatistics>
<UnknownStatistics id="32">
<unknownCounter>0</unknownCounter>
</UnknownStatistics>
</statistics>
<transformations id="33"/>
</default>
</com.rapidminer.example.table.AbstractAttribute>
<PolynominalAttribute>
<default>
<nominalMapping class="PolynominalMapping" reference="22"/>
</default>
</PolynominalAttribute>
</predictedLabelAttribute>
</default>
</kappa>
</kappa>
<psep id="34" serialization="custom">
<com.rapidminer.operator.ResultObjectAdapter>
<default>
<annotations id="35">
<keyValueMap id="36"/>
</annotations>
</default>
</com.rapidminer.operator.ResultObjectAdapter>
<com.rapidminer.tools.math.Averagable>
<default>
<averageCount>0</averageCount>
<meanSquaredSum>NaN</meanSquaredSum>
<meanSum>NaN</meanSum>
</default>
</com.rapidminer.tools.math.Averagable>
<psep>
<default>
<type>0</type>
<counter id="37">
<double-array id="38">
<double>1.0</double>
<double>0.0</double>
</double-array>
<double-array id="39">
<double>0.0</double>
<double>0.0</double>
</double-array>
</counter>
<labelAttribute class="PolynominalAttribute" reference="13"/>
<negativeClassName>yes</negativeClassName>
<positiveClassName>no</positiveClassName>
<predictedLabelAttribute class="PolynominalAttribute" reference="25"/>
</default>
</psep>
</psep>
<psep id="40" serialization="custom">
<com.rapidminer.operator.ResultObjectAdapter>
<default>
<annotations id="41">
<keyValueMap id="42"/>
</annotations>
</default>
</com.rapidminer.operator.ResultObjectAdapter>
<com.rapidminer.tools.math.Averagable>
<default>
<averageCount>0</averageCount>
<meanSquaredSum>NaN</meanSquaredSum>
<meanSum>NaN</meanSum>
</default>
</com.rapidminer.tools.math.Averagable>
<psep>
<default>
<type>1</type>
<counter id="43">
<double-array id="44">
<double>1.0</double>
<double>0.0</double>
</double-array>
<double-array id="45">
<double>0.0</double>
<double>0.0</double>
</double-array>
</counter>
<labelAttribute class="PolynominalAttribute" reference="13"/>
<negativeClassName>yes</negativeClassName>
<positiveClassName>no</positiveClassName>
<predictedLabelAttribute class="PolynominalAttribute" reference="25"/>
</default>
</psep>
</psep>
<AUC (optimistic) id="46" serialization="custom">
<com.rapidminer.operator.ResultObjectAdapter>
<default>
<annotations id="47">
<keyValueMap id="48"/>
</annotations>
</default>
</com.rapidminer.operator.ResultObjectAdapter>
<com.rapidminer.tools.math.Averagable>
<default>
<averageCount>0</averageCount>
<meanSquaredSum>NaN</meanSquaredSum>
<meanSum>NaN</meanSum>
</default>
</com.rapidminer.tools.math.Averagable>
<AUC (optimistic)>
<default>
<auc>0.5</auc>
<counter>1</counter>
<method id="49">OPTIMISTIC</method>
<positiveClass>no</positiveClass>
<rocData id="50">
<com.rapidminer.tools.math.ROCData id="51">
<points id="52">
<com.rapidminer.tools.math.ROCPoint id="53">
<falsePositives>0.0</falsePositives>
<truePositives>0.0</truePositives>
<confidence>1.0</confidence>
</com.rapidminer.tools.math.ROCPoint>
<com.rapidminer.tools.math.ROCPoint id="54">
<falsePositives>1.0</falsePositives>
<truePositives>0.0</truePositives>
<confidence>0.5</confidence>
</com.rapidminer.tools.math.ROCPoint>
</points>
<sumPos>0.0</sumPos>
<sumNeg>1.0</sumNeg>
<bestIsometricsTP>NaN</bestIsometricsTP>
</com.rapidminer.tools.math.ROCData>
</rocData>
</default>
</AUC (optimistic)>
</AUC (optimistic)>
<AUC (optimistic) id="55" serialization="custom">
<com.rapidminer.operator.ResultObjectAdapter>
<default>
<annotations id="56">
<keyValueMap id="57"/>
</annotations>
</default>
</com.rapidminer.operator.ResultObjectAdapter>
<com.rapidminer.tools.math.Averagable>
<default>
<averageCount>0</averageCount>
<meanSquaredSum>NaN</meanSquaredSum>
<meanSum>NaN</meanSum>
</default>
</com.rapidminer.tools.math.Averagable>
<AUC (optimistic)>
<default>
<auc>0.5</auc>
<counter>1</counter>
<method id="58">NEUTRAL</method>
<positiveClass>no</positiveClass>
<rocData id="59">
<com.rapidminer.tools.math.ROCData id="60">
<points id="61">
<com.rapidminer.tools.math.ROCPoint id="62">
<falsePositives>0.0</falsePositives>
<truePositives>0.0</truePositives>
<confidence>1.0</confidence>
</com.rapidminer.tools.math.ROCPoint>
<com.rapidminer.tools.math.ROCPoint id="63">
<falsePositives>1.0</falsePositives>
<truePositives>0.0</truePositives>
<confidence>0.5</confidence>
</com.rapidminer.tools.math.ROCPoint>
</points>
<sumPos>0.0</sumPos>
<sumNeg>1.0</sumNeg>
<bestIsometricsTP>NaN</bestIsometricsTP>
</com.rapidminer.tools.math.ROCData>
</rocData>
</default>
</AUC (optimistic)>
</AUC (optimistic)>
<AUC (optimistic) id="64" serialization="custom">
<com.rapidminer.operator.ResultObjectAdapter>
<default>
<annotations id="65">
<keyValueMap id="66"/>
</annotations>
</default>
</com.rapidminer.operator.ResultObjectAdapter>
<com.rapidminer.tools.math.Averagable>
<default>
<averageCount>0</averageCount>
<meanSquaredSum>NaN</meanSquaredSum>
<meanSum>NaN</meanSum>
</default>
</com.rapidminer.tools.math.Averagable>
<AUC (optimistic)>
<default>
<auc>0.5</auc>
<counter>1</counter>
<method id="67">PESSIMISTIC</method>
<positiveClass>no</positiveClass>
<rocData id="68">
<com.rapidminer.tools.math.ROCData id="69">
<points id="70">
<com.rapidminer.tools.math.ROCPoint id="71">
<falsePositives>0.0</falsePositives>
<truePositives>0.0</truePositives>
<confidence>1.0</confidence>
</com.rapidminer.tools.math.ROCPoint>
<com.rapidminer.tools.math.ROCPoint id="72">
<falsePositives>1.0</falsePositives>
<truePositives>0.0</truePositives>
<confidence>0.5</confidence>
</com.rapidminer.tools.math.ROCPoint>
</points>
<sumPos>0.0</sumPos>
<sumNeg>1.0</sumNeg>
<bestIsometricsTP>NaN</bestIsometricsTP>
</com.rapidminer.tools.math.ROCData>
</rocData>
</default>
</AUC (optimistic)>
</AUC (optimistic)>
</averagesList>
</default>
</AverageVector>
<PerformanceVector>
<default>
<comparator class="com.rapidminer.operator.performance.PerformanceVector$DefaultComparator" id="73"/>
<currentValues id="74">
<entry>
<string>precision</string>
<double>NaN</double>
</entry>
<entry>
<string>AUC</string>
<double>0.5</double>
</entry>
<entry>
<string>recall</string>
<double>NaN</double>
</entry>
<entry>
<string>AUC (pessimistic)</string>
<double>0.5</double>
</entry>
<entry>
<string>AUC (optimistic)</string>
<double>0.5</double>
</entry>
<entry>
<string>accuracy</string>
<double>1.0</double>
</entry>
</currentValues>
</default>
</PerformanceVector>
</PerformanceVector>
</object-stream>
Tagged:
0
Answers
-
Hi,
let me ask first, which version of RapidMiner do you use? In the current 5.x version, the operator Read Performance allows you to read the file back into RapidMiner during process execution. Anyway I would suggest to write the file into a Repository, because this way, you can open it by just double clicking it on the repository view. The object is then read and displayed as if it would have been just created. For accessing repositories during process execution, you could either use the context, where you can assign repository entries to the process input and outputs ports, or use the store and retrieve operators.
Greetings,
Sebastian0 -
Hi Sebastian,
I use the latest version (5.0.6) and in fact the operators are called 'Read Performance' and 'Write Performance' respectively.
I tried saving to the repo with the 'Store' operator and it indeed works, allowing me to extract a ROC curve graph for my prediction (thanks!).
However, I was hoping that by using 'Write Performance' I could access the raw data for the curve (as well as the feature selected and the confusion matrix) for later postprocessing. What would be the best way to go about that? Is this a general problem with all the 'write' operators?
Thanks!
Eli0 -
Hi Eli,
the data of your roc curve is equivalent to the predictions in your data set perfomed by an apply model operator. You just need some sorting and weighting according to a weight attribute if present. So you can simply export the dataset. This is possible as csv for example, which should be pretty easy to read.
To which selected feature are you referring to? The ROC curve doesn't seem to be related to attribute selection?
Greetings,
Sebastian0