"can't read performance file after writing with PerformanceWriter ?"

Legacy User
Legacy User New Altair Community Member
edited November 5 in Community Q&A
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:

<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>

Answers

  • land
    land New Altair Community Member
    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,
      Sebastian
  • Legacy User
    Legacy User New Altair Community Member
    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!
    Eli
  • land
    land New Altair Community Member
    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,
      Sebastian