Changeset 9478:e2d352b8e12d in orange


Ignore:
Timestamp:
08/12/11 20:09:34 (3 years ago)
Author:
wencanluo <wencanluo@…>
Branch:
default
Convert:
2b261f998848d846673be1d61b704235cdf7bd8c
Message:

BR method works well now

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/Orange/multilabel/br.py

    r9477 r9478  
    8888        for i in range(num_labels): 
    8989            # Indices of attributes to remove 
    90             indices_remove = [var for index, var in enumerate(label_indices) if var <> label_indices[i]] 
    91             sub_domain = label.remove_indices(instances,indices_remove) 
     90            #abtain the labels and use a string to represent it and store the classvalues 
     91            new_class = Orange.data.variable.Discrete(instances.domain[ label_indices[i] ].name, values = ['0','1']) 
    9292             
    93             class_index = 0 
    94             for index,var in enumerate(sub_domain): 
    95                 if var == instances.domain[ label_indices[i]]: 
    96                      class_index = index 
     93            #remove the label attributes 
     94            indices_remove = [var for index, var in enumerate(label_indices)] 
     95            new_domain = label.remove_indices(instances,indices_remove) 
    9796             
    98             #set the class label 
    99             sub_domain = Orange.data.Domain(sub_domain,sub_domain[class_index]) 
    100             
    101             sub_instances = instances.translate(sub_domain) 
    102                     
    103             #store the classifier 
    104             classifer = self.base_learner(sub_instances) 
     97            #add the class attribute 
     98            new_domain = Orange.data.Domain(new_domain,new_class) 
    10599             
     100            #build the instances 
     101            new_table = Orange.data.Table(new_domain) 
     102            for e in instances: 
     103                new_row = Orange.data.Instance( 
     104                  new_domain,  
     105                  [v.value for v in e if v.variable.attributes.has_key('label') <> 1] + 
     106                        [e[label_indices[i]].value]) 
     107                new_table.append(new_row) 
     108             
     109            classifer = self.base_learner(new_table) 
    106110            classifiers.append(classifer) 
    107111             
Note: See TracChangeset for help on using the changeset viewer.