Changeset 9302:6ee90f5e7eb8 in orange


Ignore:
Timestamp:
12/05/11 18:45:29 (2 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
91b2aa007dd88453e763bb1b00db71aa14178ad3
Message:

Changed label for C, added some tooltips.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Classify/OWSVM.py

    r9232 r9302  
    1313 
    1414class OWSVM(OWWidget): 
    15     settingsList=["C","nu","p", "eps", "probability","gamma","degree", "coef0", "kernel_type", "name", "useNu", "normalization"] 
     15    settingsList=["C","nu","p", "eps", "probability","gamma","degree",  
     16                  "coef0", "kernel_type", "name", "useNu", "normalization"] 
    1617    def __init__(self, parent=None, signalManager=None, name="SVM"): 
    1718        OWWidget.__init__(self, parent, signalManager, name, wantMainArea = 0, resizingEnabled = 0) 
    18         self.inputs=[("Example Table", ExampleTable, self.setData), ("Preprocess", PreprocessedLearner, self.setPreprocessor)] 
    19         self.outputs=[("Learner", orange.Learner, Default),("Classifier", orange.Classifier, Default),("Support Vectors", ExampleTable)] 
     19         
     20        self.inputs = [("Example Table", ExampleTable, self.setData), 
     21                       ("Preprocess", PreprocessedLearner, self.setPreprocessor)] 
     22        self.outputs = [("Learner", orange.Learner, Default), 
     23                        ("Classifier", orange.Classifier, Default), 
     24                        ("Support Vectors", ExampleTable)] 
    2025 
    2126        self.kernel_type = 2 
     
    3742        self.name="SVM" 
    3843 
    39         OWGUI.lineEdit(self.controlArea, self, 'name', box='Learner/Classifier Name', tooltip='Name to be used by other widgets to identify your learner/classifier.') 
     44        OWGUI.lineEdit(self.controlArea, self, 'name',  
     45                       box='Learner/Classifier Name',  
     46                       tooltip='Name to be used by other widgets to identify your learner/classifier.') 
    4047        OWGUI.separator(self.controlArea) 
    4148 
    42         b = OWGUI.radioButtonsInBox(self.controlArea, self, "useNu", [], box="SVM Type", orientation = QGridLayout(), addSpace=True) 
    43         b.layout().addWidget(OWGUI.appendRadioButton(b, self, "useNu", "C-SVM", addToLayout=False), 
     49        b = OWGUI.radioButtonsInBox(self.controlArea, self, "useNu", [],  
     50                                    box="SVM Type",  
     51                                    orientation = QGridLayout(),  
     52                                    addSpace=True) 
     53         
     54        b.layout().addWidget(OWGUI.appendRadioButton(b, self, "useNu", "C-SVM", 
     55                                                     addToLayout=False), 
    4456                             0, 0, Qt.AlignLeft) 
    45         b.layout().addWidget(QLabel("Model complexity (C)", b), 0, 1, Qt.AlignRight) 
    46         b.layout().addWidget(OWGUI.doubleSpin(b, self, "C", 0.5, 512.0, 0.5, addToLayout=False, callback=lambda *x: self.setType(0), alignment=Qt.AlignRight), 
     57         
     58        b.layout().addWidget(QLabel("Cost (C)", b), 0, 1, Qt.AlignRight) 
     59        b.layout().addWidget(OWGUI.doubleSpin(b, self, "C", 0.5, 512.0, 0.5,  
     60                                addToLayout=False,  
     61                                callback=lambda *x: self.setType(0),  
     62                                alignment=Qt.AlignRight, 
     63                                tooltip= "Cost for a mis-classified training instance."), 
    4764                             0, 2) 
    48         b.layout().addWidget(OWGUI.appendRadioButton(b, self, "useNu", u"ν-SVM", addToLayout=False), 
     65         
     66        b.layout().addWidget(OWGUI.appendRadioButton(b, self, "useNu", u"ν-SVM",  
     67                                                     addToLayout=False), 
    4968                             1, 0, Qt.AlignLeft) 
     69         
    5070        b.layout().addWidget(QLabel(u"Complexity bound (\u03bd)", b), 1, 1, Qt.AlignRight) 
    51         b.layout().addWidget(OWGUI.doubleSpin(b, self, "nu", 0.1, 1.0, 0.1, tooltip="Upper bound on the ratio of support vectors", addToLayout=False, callback=lambda *x: self.setType(1), alignment=Qt.AlignRight), 
     71        b.layout().addWidget(OWGUI.doubleSpin(b, self, "nu", 0.1, 1.0, 0.1,  
     72                                tooltip="Lower bound on the ratio of support vectors", 
     73                                addToLayout=False,  
     74                                callback=lambda *x: self.setType(1), 
     75                                alignment=Qt.AlignRight), 
    5276                             1, 2) 
    5377         
    54         self.kernelBox=b = OWGUI.widgetBox(self.controlArea, "Kernel") #, addSpace=True) 
    55         self.kernelradio = OWGUI.radioButtonsInBox(b, self, "kernel_type", btnLabels=[u"Linear,   x∙y", u"Polynomial,   (g x∙y + c)^d", 
    56                     u"RBF,   exp(-g|x-y|²)", u"Sigmoid,   tanh(g x∙y + c)"], callback=self.changeKernel) 
     78        self.kernelBox=b = OWGUI.widgetBox(self.controlArea, "Kernel") 
     79        self.kernelradio = OWGUI.radioButtonsInBox(b, self, "kernel_type", 
     80                                        btnLabels=[u"Linear,   x∙y", 
     81                                                   u"Polynomial,   (g x∙y + c)^d", 
     82                                                   u"RBF,   exp(-g|x-y|²)", 
     83                                                   u"Sigmoid,   tanh(g x∙y + c)"], 
     84                                        callback=self.changeKernel) 
    5785 
    5886        OWGUI.separator(b) 
    5987        self.gcd = OWGUI.widgetBox(b, orientation="horizontal") 
    60         self.leg = OWGUI.doubleSpin(self.gcd, self, "gamma",0.0,10.0,0.0001, label="  g: ", orientation="horizontal", callback=self.changeKernel, alignment=Qt.AlignRight) 
    61         self.led = OWGUI.doubleSpin(self.gcd, self, "coef0", 0.0,10.0,0.0001, label="  c: ", orientation="horizontal", callback=self.changeKernel, alignment=Qt.AlignRight) 
    62         self.lec = OWGUI.doubleSpin(self.gcd, self, "degree", 0.0,10.0,0.5, label="  d: ", orientation="horizontal", callback=self.changeKernel, alignment=Qt.AlignRight) 
     88        self.leg = OWGUI.doubleSpin(self.gcd, self, "gamma",0.0,10.0,0.0001, 
     89                                label="  g: ", 
     90                                orientation="horizontal", 
     91                                callback=self.changeKernel, 
     92                                alignment=Qt.AlignRight) 
     93         
     94        self.led = OWGUI.doubleSpin(self.gcd, self, "coef0", 0.0,10.0,0.0001, 
     95                                label="  c: ", 
     96                                orientation="horizontal", 
     97                                callback=self.changeKernel, 
     98                                alignment=Qt.AlignRight) 
     99         
     100        self.lec = OWGUI.doubleSpin(self.gcd, self, "degree", 0.0,10.0,0.5, 
     101                                label="  d: ", 
     102                                orientation="horizontal", 
     103                                callback=self.changeKernel, 
     104                                alignment=Qt.AlignRight) 
    63105 
    64106        OWGUI.separator(self.controlArea) 
    65107         
    66         self.optionsBox=b=OWGUI.widgetBox(self.controlArea, "Options", addSpace=True) 
    67         OWGUI.doubleSpin(b,self, "eps", 0.0005, 1.0, 0.0005, label=u"Tolerance (ε)", labelWidth = 180, orientation="horizontal", alignment=Qt.AlignRight) 
    68 #        eps = OWGUI.doubleSpin(b,self, "eps", 0.001, 0.5, 0.001, label=u"Numeric precision (ε)", labelWidth = 180, orientation="horizontal", alignment=Qt.AlignRight) 
    69  
    70         self.probBox = OWGUI.checkBox(b,self, "probability", label="Estimate class probabilities", tooltip="Create classifiers that support class probability estimation") 
    71 ##        OWGUI.checkBox(b,self, "shrinking", label="Shrinking") 
    72 ##        self.nomogramBox=OWGUI.checkBox(b, self, "nomogram", "For nomogram if posible", tooltip="Builds a model that can be visualized in a nomogram (works only\nfor discrete class values with two values)") 
    73         OWGUI.checkBox(b, self, "normalization", label="Normalize data", tooltip="Use data normalization") 
    74  
    75         self.paramButton=OWGUI.button(self.controlArea, self, "Automatic parameter search", callback=self.parameterSearch, 
    76                                       tooltip="Automatically searches for parameters that optimize classifier accuracy", debuggingEnabled=0) 
     108        self.optionsBox=b=OWGUI.widgetBox(self.controlArea, "Options", 
     109                                          addSpace=True) 
     110         
     111        OWGUI.doubleSpin(b,self, "eps", 0.0005, 1.0, 0.0005, 
     112                         label=u"Numerical tolerance", 
     113                         labelWidth = 180, 
     114                         orientation="horizontal", 
     115                         tooltip="Numerical tolerance of termination criterion.", 
     116                         alignment=Qt.AlignRight) 
     117 
     118        self.probBox = OWGUI.checkBox(b,self, "probability", 
     119                                      label="Estimate class probabilities", 
     120                                      tooltip="Create classifiers that support class probability estimation." 
     121                                      ) 
     122         
     123        OWGUI.checkBox(b, self, "normalization", 
     124                       label="Normalize data",  
     125                       tooltip="Use data normalization") 
     126 
     127        self.paramButton=OWGUI.button(self.controlArea, self, "Automatic parameter search", 
     128                                      callback=self.parameterSearch, 
     129                                      tooltip="Automatically searches for parameters that optimize classifier accuracy",  
     130                                      debuggingEnabled=0) 
     131         
    77132        self.paramButton.setDisabled(True) 
    78133 
    79         OWGUI.button(self.controlArea, self,"&Apply", callback=self.applySettings, default=True) 
     134        OWGUI.button(self.controlArea, self,"&Apply",  
     135                     callback=self.applySettings,  
     136                     default=True) 
    80137         
    81138        OWGUI.rubber(self.controlArea) 
    82         #self.adjustSize() 
     139         
    83140        self.loadSettings() 
    84141        self.changeKernel() 
     
    97154        self.reportSettings("Learning parameters", 
    98155                            [("Kernel", kernel), 
    99                              ("Model complexity", self.C), 
    100                              ("Tolerance", self.p), 
     156                             ("Cost (C)", self.C), 
    101157                             ("Numeric precision", self.eps), 
    102                              self.useNu and ("Complexity bound", self.nu), 
     158                             self.useNu and ("Complexity bound (nu)", self.nu), 
    103159                             ("Estimate class probabilities", OWGUI.YesNo[self.probability]), 
    104160                             ("Normalize data", OWGUI.YesNo[self.normalization])]) 
Note: See TracChangeset for help on using the changeset viewer.