Changeset 10776:80c7631614e0 in orange


Ignore:
Timestamp:
04/10/12 15:02:15 (2 years ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Added "Basis Matrix" output signal.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/Regression/OWEarth.py

    r9671 r10776  
    55<icon>icons/Earth.png<icon> 
    66<priority>100</priority> 
    7 <keywords>MARS, Multivariate, Adaptive, Regression, Splines</keywords> 
     7<tags>MARS, Multivariate, Adaptive, Regression, Splines</tags> 
    88""" 
    99 
     
    1717class OWEarth(OWWidget): 
    1818    settingsList = ["name", "degree", "terms", "penalty"] 
    19      
     19 
    2020    def __init__(self, parent=None, signalManager=None, 
    2121                 title="Earth"): 
    2222        OWWidget.__init__(self, parent, signalManager, title, wantMainArea=False) 
    23          
    24         self.inputs = [("Data", Orange.data.Table, self.set_data), ("Preprocessor", PreprocessedLearner, self.set_preprocessor)] 
    25         self.outputs = [("Learner", earth.EarthLearner), ("Predictor", earth.EarthClassifier)] 
    26          
     23 
     24        self.inputs = [("Data", Orange.data.Table, self.set_data), 
     25                       ("Preprocessor", PreprocessedLearner, self.set_preprocessor)] 
     26 
     27        self.outputs = [("Learner", earth.EarthLearner, Default), 
     28                        ("Predictor", earth.EarthClassifier, Default), 
     29                        ("Basis Matrix", Orange.data.Table)] 
     30 
    2731        self.name = "Earth Learner" 
    2832        self.degree = 1 
    2933        self.terms = 21 
    3034        self.penalty = 2 
    31          
     35 
    3236        self.loadSettings() 
    33          
     37 
    3438        ##### 
    3539        # GUI 
    3640        ##### 
    37          
     41 
    3842        OWGUI.lineEdit(self.controlArea, self, "name",  
    3943                       box="Learner/Classifier Name", 
    4044                       tooltip="Name for the learner/predictor") 
    41          
     45 
    4246        box = OWGUI.widgetBox(self.controlArea, "Forward Pass", addSpace=True) 
    4347        OWGUI.spin(box, self, "degree", 1, 3, step=1, 
     
    4852                       tooltip="Maximum number of terms derived in the forward pass.") 
    4953        s.control.setSpecialValueText("Automatic") 
    50          
     54 
    5155        box = OWGUI.widgetBox(self.controlArea, "Pruning Pass", addSpace=True) 
    5256        OWGUI.doubleSpin(box, self, "penalty", min=0.0, max=10.0, step=0.25, 
    5357                   label="Knot penalty") 
    54          
     58 
    5559        OWGUI.button(self.controlArea, self, "&Apply", 
    5660                     callback=self.apply) 
    57          
     61 
    5862        self.data = None 
    5963        self.preprocessor = None 
    6064        self.resize(300, 200) 
    61          
     65 
    6266        self.apply() 
    63          
     67 
    6468    def set_data(self, data=None): 
    6569        self.data = data 
    66              
     70 
    6771    def set_preprocessor(self, pproc=None): 
    6872        self.preprocessor = pproc 
    69          
     73 
    7074    def handleNewSignals(self): 
    7175        self.apply() 
    72              
     76 
    7377    def apply(self): 
    7478        learner = earth.EarthLearner(degree=self.degree, 
     
    7781                                    name=self.name) 
    7882        predictor = None 
     83        basis_matrix = None 
    7984        if self.preprocessor: 
    8085            learner = self.preprocessor.wrapLearner(learner) 
    81          
     86 
    8287        self.error(0) 
    8388        if self.data is not None: 
     
    8792            except Exception, ex: 
    8893                self.error(0, "An error during learning: %r" % ex) 
    89              
     94 
     95            if predictor is not None:      
     96                base_features = predictor.base_features() 
     97                basis_domain = Orange.data.Domain(base_features,  
     98                                                  self.data.domain.class_var) 
     99                basis_matrix = Orange.data.Table(basis_domain, self.data) 
     100 
    90101        self.send("Learner", learner) 
    91102        self.send("Predictor", predictor) 
    92          
     103        self.send("Basis Matrix", basis_matrix) 
     104 
    93105    def sendReport(self): 
    94106        self.reportSettings("Learning parameters",  
     
    98110                             ]) 
    99111        self.reportData(self.data) 
    100          
     112 
    101113if __name__ == "__main__": 
    102114    app = QApplication(sys.argv) 
     
    106118    app.exec_() 
    107119    w.saveSettings() 
    108              
    109              
    110          
    111          
    112          
    113          
Note: See TracChangeset for help on using the changeset viewer.