Changeset 9453:132af75cef94 in orange


Ignore:
Timestamp:
07/06/11 08:46:19 (3 years ago)
Author:
wencanluo <wencanluo@…>
Branch:
default
Convert:
2225dd190f6491e04f81a06aa5f9b5aa60969523
Message:

Add an input channel for BR widget

Location:
orange
Files:
4 edited

Legend:

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

    r9447 r9453  
    8181         
    8282    def __init__(self, **argkw): 
     83        self.multi_flag = 1 
    8384        self.__dict__.update(argkw) 
    8485         
     
    117118class BinaryRelevanceClassifier(_multibase.MultiLabelClassifier): 
    118119    def __init__(self, **kwds): 
     120        self.multi_flag = 1 
    119121        self.__dict__.update(kwds) 
     122         
    120123    def __call__(self, example, result_type=Orange.classification.Classifier.GetValue): 
    121124        num_labels = len(self.label_indices) 
  • orange/Orange/multilabel/multibase.py

    r9445 r9453  
    1010  
    1111class MultiLabelLearner(Orange.classification.Learner): 
    12     pass  
    13     
    14  
     12    def __new__(cls, **argkw): 
     13        self = Orange.classification.Learner.__new__(cls, **argkw) 
     14        return self 
     15     
     16    def __init__(self, **argkw): 
     17        self.__dict__.update(argkw) 
     18         
    1519class MultiLabelClassifier(Orange.classification.Classifier): 
    16     pass  
     20    def __init__(self, **argkw): 
     21        self.__dict__.update(argkw) 
     22      
  • orange/OrangeWidgets/Multilabel/OWBR.py

    r9447 r9453  
    1212 
    1313import Orange 
     14import Orange.multilabel.label as label 
    1415 
    1516class OWBR(OWWidget): 
    16     settingsList = ["name", "baselearner"] 
     17    settingsList = ["name"] 
    1718 
    1819    def __init__(self, parent=None, signalManager = None, name='Binary Relevance'): 
     
    2122        self.callbackDeposit = [] 
    2223 
    23         self.inputs = [("Examples", ExampleTable, self.setData), ("Preprocess", PreprocessedLearner, self.setPreprocessor)] 
     24        self.inputs = [("Examples", ExampleTable, self.set_data),  
     25                       ("Preprocess", PreprocessedLearner, self.set_preprocessor), 
     26                       ("Binary Classification", Orange.classification.Learner, self.set_base_learner) 
     27                       ] 
    2428        self.outputs = [("Learner", orange.Learner),("Binary Relevance Classifier", Orange.multilabel.BinaryRelevanceClassifier)] 
    25  
    26         self.baselearnerList = [("Naive Bayes", orange.ExamplesDistanceConstructor_Euclidean), 
    27                        ("KNN", orange.kNNClassifier), 
    28                        ("C4.5", orange.C45Classifier), 
    29                        ("Majority", orange.Classifier), 
    30 #                       ("Dynamic time warp", orange.ExamplesDistanceConstructor_DTW) 
    31                             ] 
    3229 
    3330        # Settings 
    3431        self.name = 'Binary Relevance' 
    35         self.baselearner = 0; 
     32        self.base_learner = Orange.core.BayesLearner; 
    3633         
    3734        self.loadSettings() 
     
    3936        self.data = None                    # input data set 
    4037        self.preprocessor = None            # no preprocessing as default 
    41         self.setLearner()                   # this just sets the learner, no data 
     38        self.set_learner()                   # this just sets the learner, no data 
    4239                                            # has come to the input yet 
    4340 
     
    4744        OWGUI.separator(self.controlArea) 
    4845 
    49         wbM = OWGUI.widgetBox(self.controlArea, "Base Learner") 
    50         OWGUI.comboBox(wbM, self, "baselearner", items = [x[0] for x in self.baselearnerList], valueType = int, callback = self.baselearnerChanged) 
    51         self.baselearnerChanged() 
    52  
    53         OWGUI.separator(self.controlArea) 
    54  
    55         OWGUI.button(self.controlArea, self, "&Apply", callback=self.setLearner, disabled=0, default=True) 
     46        OWGUI.button(self.controlArea, self, "&Apply", callback=self.set_learner, disabled=0, default=True) 
    5647         
    5748        OWGUI.rubber(self.controlArea) 
     
    5950        self.resize(100,250) 
    6051 
    61     def sendReport(self): 
     52    def send_report(self): 
    6253        self.reportSettings("Learning parameters", 
    63                             [("baselearner", self.baselearnerList[self.baselearner][0])]) 
     54                            [("base_learner", self.baselearnerList[self.base_learner][0])]) 
    6455        self.reportData(self.data) 
     56             
     57    def set_data(self,data):   
     58        if data == None: 
     59            return 
     60 
     61        if label.is_multilabel(data) <> 1: 
     62            raise TypeError('data must have at least one label attribute for multi-label classification') 
    6563         
    66     def baselearnerChanged(self): 
    67         pass 
    68              
    69     def setData(self,data): 
    70         self.data = self.isDataWithClass(data, orange.VarTypes.Discrete, checkMissing=True) and data or None 
    71         self.setLearner() 
     64        self.data = data 
     65        self.set_learner() 
    7266 
    73     def setPreprocessor(self, pp): 
     67    def set_preprocessor(self, pp): 
    7468        self.preprocessor = pp 
    75         self.setLearner() 
    76  
    77     def setLearner(self): 
    78         baselearner = self.baselearnerList[self.baselearner][1]() 
    79         self.learner = Orange.multilabel.BinaryRelevanceLearner(base_learner = self.baselearner) 
     69        self.set_learner() 
     70         
     71    def set_base_learner(self,base_learner): 
     72        self.base_learner = base_learner 
     73        self.set_learner() 
     74     
     75    def set_learner(self): 
     76        self.learner = Orange.multilabel.BinaryRelevanceLearner(base_learner = self.base_learner) 
    8077        if self.preprocessor: 
    8178            self.learner = self.preprocessor.wrapLearner(self.learner) 
     
    106103    ow=OWBR() 
    107104 
    108     dataset = orange.ExampleTable('../../doc/datasets/multidata.tab') 
    109     ow.setData(dataset) 
     105    dataset = Orange.data.Table('../../doc/datasets/multidata.tab') 
     106    ow.set_data(dataset) 
    110107 
    111108    ow.show() 
  • orange/OrangeWidgets/Multilabel/OWTestLearners.py

    r9449 r9453  
    280280        learners = [] 
    281281        n = len(self.data.domain.attributes)*2 
    282         print n 
    283         print len(self.data) 
     282         
    284283        indices = orange.MakeRandomIndices2(p0=min(n, len(self.data)), stratified=orange.MakeRandomIndices2.StratifiedIfPossible) 
    285284 
    286285        new = self.data 
    287 #         new = self.data.selectref(indices(self.data)) 
     286#        new = self.data.selectref(indices(self.data)) 
    288287#        new = self.data.selectref([1]*min(n, len(self.data)) + 
    289288#                                  [0]*(len(self.data) - min(n, len(self.data)))) 
    290289         
    291         for e in new: 
     290        for e in new:  
    292291            print e 
    293292         
Note: See TracChangeset for help on using the changeset viewer.