🎉Community Raffle - Win $25

An exclusive raffle opportunity for active members like you! Complete your profile, answer questions and get your first accepted badge to enter the raffle.
Join and Win

"An error in aggregation operator kmeans"

User: "Shubha"
New Altair Community Member
Updated by Jocelyn
Hi,

This is my code:

<operator name="Root" class="Process" expanded="yes">
    <operator name="ExampleSetGenerator" class="ExampleSetGenerator">
        <parameter key="number_examples" value="25"/>
        <parameter key="target_function" value="random"/>
    </operator>
    <operator name="AttributeFilter" class="AttributeFilter">
        <parameter key="condition_class" value="attribute_name_filter"/>
        <parameter key="parameter_string" value="att.*"/>
    </operator>
    <operator name="KMeans" class="KMeans">
        <parameter key="k" value="3"/>
    </operator>
    <operator name="Aggregation" class="Aggregation">
        <list key="aggregation_attributes">
          <parameter key="att1" value="average"/>
        </list>
        <parameter key="group_by_attributes" value="cluster"/>
    </operator>
</operator>


I get the error that the attribute 'cluster' does not exist. But after running the kmeans, a new attribute 'cluster' was created in the exampleset. So, why is this error? Or is it reading the initial input example set ? How do i tell RM to read that particular data which was generated by applying the kmeans?

Thanks, Shubha

Find more posts tagged with

Sort by:
1 - 9 of 91
    User: "TobiasMalbrecht"
    New Altair Community Member
    Hi Shubha,

    this error happens because the [tt]Aggregation[/tt] operator only searches through the regular attributes when matching attribute names. We will add a parameter [tt]work_on_special[/tt] in the near future. Until then you have to change the type of the cluster attribute to regular before applying the [tt]Aggregation[/tt].

    Kind regards,
    Tobias
    User: "Shubha"
    New Altair Community Member
    OP
    Thanks Tobias! That exactly did my job...

    One more question, can i specicy all the variables namely (att1, att2, att3, att4, att5) in the aggregate function? (in the above code i posted, only att1 is used). I tried by using the regular expression, att.*. But there is an error, "The attribute 'att.*' doesn't exist". I am sure that i am missing something... What could it be?

    Thanks again,
    Shubha
    User: "TobiasMalbrecht"
    New Altair Community Member
    Hi Shubha,
    Shubha wrote:

    One more question, can i specicy all the variables namely (att1, att2, att3, att4, att5) in the aggregate function? (in the above code i posted, only att1 is used). I tried by using the regular expression, att.*. But there is an error, "The attribute 'att.*' doesn't exist". I am sure that i am missing something... What could it be?
    You can specify more. You just have to extend the list and therewith specify more than one aggregation attribute and function. Please see the attached code:

    <operator name="Aggregation" class="Aggregation">
        <list key="aggregation_attributes">
          <parameter key="att1"  value="average"/>
          <parameter key="att2"  value="average"/>
        </list>
        <parameter key="group_by_attributes"  value="cluster"/>
    </operator>
    Regards,
    Tobias
    User: "Shubha"
    New Altair Community Member
    OP
    Thank you very much...
    User: "Shubha"
    New Altair Community Member
    OP
    Was just thinking if I could avoid adding each variable for aggregation. Instead, can I specify all the variables which needs to be aggregated by a regular expression or so?

    Thanks, Shubha
    User: "haddock"
    New Altair Community Member
    Sure
    <operator name="Root" class="Process" expanded="yes">
        <operator name="ExampleSetGenerator" class="ExampleSetGenerator">
            <parameter key="number_examples" value="25"/>
            <parameter key="target_function" value="random"/>
        </operator>
        <operator name="AttributeFilter" class="AttributeFilter">
            <parameter key="condition_class" value="attribute_name_filter"/>
            <parameter key="parameter_string" value="att.*"/>
        </operator>
        <operator name="KMeans" class="KMeans">
            <parameter key="k" value="3"/>
        </operator>
        <operator name="AttributeAggregation" class="AttributeAggregation">
            <parameter key="aggregation_attributes" value="at.*"/>
            <parameter key="attribute_name" value="nu"/>
        </operator>
    </operator>
    User: "Shubha"
    New Altair Community Member
    OP
    Thanks,

    This does different i guess. But, surely this will answer another question of mine. AttributeAggregation is something which I learnt new today. Thanks.

    What i need was for each group of nominal cluster attribute, i need the average of all the 'att' attributes, (i.e., The above can do averages row-wise, but actually i need column-wise) without actually specifying each of the variables.

    Secondly, unlike 'Aggregation', the operator 'AttributeAggregation' will not perform the operation groupwise.

    Thirdly, if my attrubutes have different names, unlike att1, att2,... i cant use the regular expressions too...


    Thanking you,
    Shubha
    User: "haddock"
    New Altair Community Member
    Oh dear, so wrong on so many levels, as the following shows.
    <process version="4.3">

      <operator name="Root" class="Process" expanded="yes">
          <operator name="ExampleSetGenerator" class="ExampleSetGenerator">
              <parameter key="number_examples" value="200"/>
              <parameter key="number_of_attributes" value="4"/>
              <parameter key="target_function" value="random"/>
          </operator>
          <operator name="ExampleSetTranspose" class="ExampleSetTranspose">
          </operator>
          <operator name="AttributeAggregation" class="AttributeAggregation">
              <parameter key="aggregation_attributes" value="at.*"/>
              <parameter key="aggregation_function" value="average"/>
              <parameter key="attribute_name" value="Mmm"/>
          </operator>
          <operator name="FeatureNameFilter" class="FeatureNameFilter" breakpoints="after">
              <parameter key="skip_features_with_name" value="at.*"/>
          </operator>
          <operator name="ExampleSetTranspose (2)" class="ExampleSetTranspose">
          </operator>
      </operator>

    </process>

    User: "Shubha"
    New Altair Community Member
    OP
    Thank you very much...  :) Transpose was exactly what i thought too... I was just thinking if the examples/observations were too many,will  this method be OK? And also, again trasposing.... Wanted to confirm from you experts, if I am missing some useful operators specially made for these purposes...

    I can also see the application of feature here.. :)... Many Thanks for clearing all my queries...