Changeset 9455:62e6b8c39f09 in orange


Ignore:
Timestamp:
07/09/11 11:44:48 (3 years ago)
Author:
wencanluo <wencanluo@…>
Branch:
default
Convert:
d07a411d306445919ab0e68cb6f9086882bdcd0f
Message:

Update the OWTestLearners widget to support evaluator multi-label

Location:
orange/OrangeWidgets
Files:
1 deleted
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Evaluate/OWTestLearners.py

    r8305 r9455  
    1717                        orange.AttributeWarning) 
    1818 
     19import Orange.multilabel.label as label 
     20import Orange 
     21 
    1922############################################################################## 
    2023 
     
    5457        ('Recall', 'Recall', 'recall(cm)', False, True), 
    5558        ('Brier score', 'Brier', 'BrierScore(res)', True), 
    56         ('Matthews correlation coefficient', 'MCC', 'MCC(cm)', False, True)]] 
     59        ('Matthews correlation coefficient', 'MCC', 'MCC(cm)', False, True), 
     60        ('Hamming Loss', 'HammingLoss', 'mlc_hamming_loss(res)', True), 
     61        ('Accuracy', 'Accuracy', 'mlc_accuracy(res)', True), 
     62        ('Precision', 'Precision', 'mlc_precision(res)', True), 
     63        ('Recall', 'Recall', 'mlc_recall(res)', True), 
     64        ]] 
    5765 
    5866    rStatistics = [Score(*s) for s in [\ 
     
    266274        new = self.data.selectref(indices(self.data)) 
    267275         
     276        multilabel_flag = label.is_multilabel(self.data) #add for multi-label 
     277         
    268278        self.warning(0) 
    269279        learner_exceptions = [] 
     
    274284            try: 
    275285                predictor = learner(new) 
    276                 if predictor(new[0]).varType == new.domain.classVar.varType: 
     286                if multilabel_flag == 0: #single label 
     287                    if predictor(new[0]).varType == new.domain.classVar.varType: 
     288                        learners.append(learner) 
     289                    else: 
     290                        l.scores = [] 
     291                else:                   #multi-label 
    277292                    learners.append(learner) 
    278                 else: 
    279                     l.scores = [] 
    280293            except Exception, ex: 
    281294                learner_exceptions.append((l, ex)) 
     
    365378        """handle input train data set""" 
    366379        self.closeContext() 
    367         self.data = self.isDataWithClass(data, checkMissing=True) and data or None 
     380         
     381        multilabel_flag = label.is_multilabel(data) #add for multi-label 
     382        if multilabel_flag == 0:  
     383            self.data = self.isDataWithClass(data, checkMissing=True) and data or None 
     384        else: 
     385            self.data = data 
     386         
    368387        self.fillClassCombo() 
    369388        if not self.data: 
     
    375394        else: 
    376395            # new data has arrived 
    377             self.data = orange.Filter_hasClassValue(self.data) 
     396            print 'new data' 
     397            if multilabel_flag == 0: #single label 
     398                self.data = orange.Filter_hasClassValue(self.data) 
    378399            self.statLayout.setCurrentWidget(self.cbox if self.isclassification() else self.rbox) 
    379400             
     
    416437         
    417438        if self.targetClass<len(domain.classVar.values): 
    418             self.targetCombo.setCurrentIndex(self.targetClass) 
     439            self.targetCombo.setCurrentIndex(self.targetClass)              
    419440        else: 
    420441            self.targetCombo.setCurrentIndex(0) 
     
    536557 
    537558    data1 = orange.ExampleTable(r'../../doc/datasets/voting') 
    538     data2 = orange.ExampleTable(r'../../golf') 
    539     datar = orange.ExampleTable(r'../../auto-mpg') 
    540     data3 = orange.ExampleTable(r'../../sailing-big') 
    541     data4 = orange.ExampleTable(r'../../sailing-test') 
     559    data2 = orange.ExampleTable(r'../../doc/datasets/adult') 
     560    datar = orange.ExampleTable(r'../../doc/datasets/balance-scale') 
     561    data3 = orange.ExampleTable(r'../../doc/datasets/bridges') 
     562    data4 = orange.ExampleTable(r'../../doc/datasets/lenses') 
     563    data5 = orange.ExampleTable(r'../../doc/datasets/multidata') 
    542564 
    543565    l1 = orange.MajorityLearner(); l1.name = '1 - Majority' 
     
    553575 
    554576    l4 = orange.MajorityLearner(); l4.name = "4 - Majority" 
    555  
     577    l5 = Orange.multilabel.BinaryRelevanceLearner(); l1.name = '5 - BR' 
     578     
    556579    import orngRegression as r 
    557580    r5 = r.LinearRegressionLearner(name="0 - lin reg") 
    558581 
    559     testcase = 4 
     582    testcase = 5 
    560583 
    561584    if testcase == 0: # 1(UPD), 3, 4 
     
    591614        ow.setLearner(l2, 5) 
    592615        ow.setTestData(None) 
    593  
     616    if testcase == 5: # binary relevance 
     617        ow.setData(data5) 
     618        ow.setLearner(l5, 1) 
    594619    ow.saveSettings() 
Note: See TracChangeset for help on using the changeset viewer.