source: orange/Orange/OrangeWidgets/Regression/OWPLS.py @ 9671:a7b056375472

Revision 9671:a7b056375472, 3.6 KB checked in by anze <anze.staric@…>, 2 years ago (diff)

Moved orange to Orange (part 2)

Line 
1"""
2<name>PLS Regression</name>
3<description>Partial Least Squares Regression</name>
4<icon>icons/PLSRegression.png</icon>
5<priority>15</priority>
6<category>Regression</category>
7<keywords>linear, model, PCA</keywords>
8
9"""
10
11from OWWidget import *
12import OWGUI
13
14import Orange
15from Orange.regression import pls
16from Orange.optimization import PreprocessedLearner
17
18class OWPLS(OWWidget):
19    settingsList = ["name", "n_comp", "deflation_mode", "mode", "algorithm"]
20   
21    def __init__(self, parent=None, signalManager=None, title="PLS Regression"):
22        OWWidget.__init__(self, parent, signalManager, title, wantMainArea=False)
23       
24        self.inputs = [("Data", Orange.data.Table, self.set_data),
25                       ("Preprocessor", PreprocessedLearner, self.set_preprocessor)]
26       
27        self.outputs = [("Learner", Orange.core.Learner), 
28                        ("Predictor", Orange.core.Classifier)]
29       
30       
31        ##########
32        # Settings
33        ##########
34         
35        self.name = "PLS Regression"
36        self.n_comp = 2
37        self.deflation_mode = "Regression"
38        self.mode = "PLS"
39        self.algorithm = "svd"
40       
41        self.loadSettings()
42        #####
43        # GUI
44        #####
45       
46        box = OWGUI.widgetBox(self.controlArea, "Learner/Predictor Name", 
47                              addSpace=True)
48       
49        OWGUI.lineEdit(box, self, "name",
50                       tooltip="Name to use for the learner/predictor.")
51       
52        box = OWGUI.widgetBox(self.controlArea, "Settings", addSpace=True)
53       
54        OWGUI.spin(box, self, "n_comp", 2, 15, 1, 
55                   label="Number of components:", 
56                   tooltip="Number of components to keep.")
57       
58        OWGUI.comboBox(box, self, "deflation_mode", 
59                       label="Deflation mode", 
60                       items=["Regression", "Canonical"],
61#                       tooltip="",
62                       sendSelectedValue=True)
63       
64        OWGUI.comboBox(box, self, "mode", 
65                       label="Mode", 
66                       items=["PLS", "CCA"],
67#                       tooltip="",
68                       sendSelectedValue=True)
69       
70        OWGUI.rubber(self.controlArea)
71       
72        OWGUI.button(self.controlArea, self, "&Apply",
73                     callback=self.apply,
74                     tooltip="Send the learner on",
75                     autoDefault=True)
76       
77        self.data = None
78        self.preprocessor = None
79       
80        self.apply()
81   
82    def set_data(self, data=None):
83        self.data = data
84           
85    def set_preprocessor(self, pproc=None):
86        self.preprocessor = pproc
87       
88    def handleNewSignals(self):
89        self.apply()
90       
91    def apply(self):
92        learner = pls.PLSRegressionLearner(n_comp=self.n_comp,
93                        deflation_mode=self.deflation_mode.lower(),
94                        mode=self.mode,
95                        name=self.name
96                        )
97        predictor = None
98       
99        if self.preprocessor is not None:
100            learner = self.preprocessor.wrapLearner(learner)
101
102        self.error(0)
103        try:
104            if self.data is not None:
105                predictor = learner(self.data)
106                predictor.name = self.name
107        except Exception, ex:
108            self.error(0, "An error during learning: %r" % ex)
109           
110        self.send("Learner", learner)
111        self.send("Predictor", predictor)
112       
113if __name__ == "__main__":
114    app = QApplication(sys.argv)
115    w = OWPLS()
116    w.set_data(Orange.data.Table("housing"))
117    w.show()
118    app.exec_()
119#    w.saveSettings()
Note: See TracBrowser for help on using the repository browser.