예제 #1
0
    def setUp(self):
        warnings.filterwarnings("ignore", ".*", ConvergenceWarning)

        self.widget = self.create_widget(OWSGD,
                                         stored_settings={"auto_apply": False})
        self.init()
        self.parameters = [
            # Loss params for classification
            ParameterMapping("loss",
                             self.widget.cls_loss_function_combo,
                             list(zip(*self.widget.cls_losses))[1],
                             problem_type="classification"),
            ParameterMapping("epsilon",
                             self.widget.cls_epsilon_spin,
                             problem_type="classification"),
            # Loss params for regression
            ParameterMapping("loss",
                             self.widget.reg_loss_function_combo,
                             list(zip(*self.widget.reg_losses))[1],
                             problem_type="regression"),
            ParameterMapping("epsilon",
                             self.widget.reg_epsilon_spin,
                             problem_type="regression"),
            # Shared params
            ParameterMapping("penalty", self.widget.penalty_combo,
                             list(zip(*self.widget.penalties))[1]),
            ParameterMapping.from_attribute(self.widget, "alpha"),
            ParameterMapping.from_attribute(self.widget, "l1_ratio"),
            ParameterMapping("learning_rate", self.widget.learning_rate_combo,
                             list(zip(*self.widget.learning_rates))[1]),
            ParameterMapping.from_attribute(self.widget, "eta0"),
            ParameterMapping.from_attribute(self.widget, "power_t"),
        ]
 def setUp(self):
     self.widget = self.create_widget(OWPLS,
                                      stored_settings={"auto_apply": False})
     self.init()
     self.parameters = [
         ParameterMapping('max_iter', self.widget.n_iters),
         ParameterMapping('n_components', self.widget.ncomps_spin)]
예제 #3
0
    def setUp(self):
        warnings.filterwarnings("ignore", ".*", ConvergenceWarning)

        self.widget = self.create_widget(
            OWSGD, stored_settings={"auto_apply": False})
        self.init()
        self.parameters = [
            # Loss params for classification
            ParameterMapping("loss", self.widget.cls_loss_function_combo,
                             list(zip(*self.widget.cls_losses))[1],
                             problem_type="classification"),
            ParameterMapping("epsilon", self.widget.cls_epsilon_spin,
                             problem_type="classification"),
            # Loss params for regression
            ParameterMapping("loss", self.widget.reg_loss_function_combo,
                             list(zip(*self.widget.reg_losses))[1],
                             problem_type="regression"),
            ParameterMapping("epsilon", self.widget.reg_epsilon_spin,
                             problem_type="regression"),
            # Shared params
            ParameterMapping("penalty", self.widget.penalty_combo,
                             list(zip(*self.widget.penalties))[1]),
            ParameterMapping.from_attribute(self.widget, "alpha"),
            ParameterMapping.from_attribute(self.widget, "l1_ratio"),
            ParameterMapping("learning_rate", self.widget.learning_rate_combo,
                             list(zip(*self.widget.learning_rates))[1]),
            ParameterMapping.from_attribute(self.widget, "eta0"),
            ParameterMapping.from_attribute(self.widget, "power_t"),
        ]
예제 #4
0
 def setUp(self):
     self.widget = self.create_widget(OWAdaBoostClassification,
                                      stored_settings={"auto_apply": False})
     self.init()
     losses = self.widget.losses
     self.parameters = [
         ParameterMapping('algorithm', self.widget.algorithm_combo, losses),
         ParameterMapping('learning_rate', self.widget.learning_rate_spin),
         ParameterMapping('n_estimators', self.widget.n_estimators_spin)]
 def setUp(self):
     self.widget = self.create_widget(OWAdaBoostRegression,
                                      stored_settings={"auto_apply": False})
     self.init()
     losses = [loss.lower() for loss in self.widget.losses]
     self.parameters = [
         ParameterMapping('loss', self.widget.loss_combo, losses),
         ParameterMapping('learning_rate', self.widget.learning_rate_spin),
         ParameterMapping('n_estimators', self.widget.n_estimators_spin)]
예제 #6
0
 def setUp(self):
     self.widget = self.create_widget(OWKNNRegression,
                                      stored_settings={"auto_apply": False})
     self.init()
     self.parameters = [
         ParameterMapping('metric', self.widget.metrics_combo,
                          self.widget.metrics),
         ParameterMapping('weights', self.widget.weights_combo,
                          self.widget.weights),
         ParameterMapping('n_neighbors', self.widget.n_neighbors_spin)]
 def setUp(self):
     self.widget = self.create_widget(OWRandomForest,
                                      stored_settings={"auto_apply": False})
     self.init()
     nest_spin = self.widget.n_estimators_spin
     nest_min_max = [nest_spin.minimum() * 10, nest_spin.minimum()]
     self.parameters = [
         ParameterMapping("n_estimators", nest_spin, nest_min_max),
         ParameterMapping("min_samples_split",
                          self.widget.min_samples_split_spin[1]),
     ]
 def setUp(self):
     self.widget = self.create_widget(OWClassificationTree,
                                      stored_settings={"auto_apply": False})
     self.init()
     scores = [score[1] for score in self.widget.scores]
     self.parameters = [
         ParameterMapping('criterion', self.widget.score_combo, scores),
         ParameterMapping('max_depth', self.widget.max_depth_spin[1]),
         ParameterMapping('min_samples_split',
                          self.widget.min_internal_spin[1]),
         ParameterMapping('min_samples_leaf', self.widget.min_leaf_spin[1])]
예제 #9
0
 def test_parameters_svr_type(self):
     """Check learner and model for various values of all parameters
     when NuSVR is chosen
     """
     self.assertEqual(self.widget.svrtype, OWSVMRegression.Epsilon_SVR)
     # setChecked(True) does not trigger callback event
     self.widget.nu_radio.click()
     self.assertEqual(self.widget.svrtype, OWSVMRegression.Nu_SVR)
     self.parameters[0] = ParameterMapping("C", self.widget.nu_C_spin)
     self.parameters[1] = ParameterMapping("nu", self.widget.nu_spin)
     self.test_parameters()
예제 #10
0
 def setUp(self):
     self.widget = self.create_widget(OWKNNLearner,
                                      stored_settings={"auto_apply": False})
     self.init()
     self.parameters = [
         ParameterMapping("metric", self.widget.metrics_combo,
                          self.widget.metrics),
         ParameterMapping("weights", self.widget.weights_combo,
                          self.widget.weights),
         ParameterMapping("n_neighbors", self.widget.n_neighbors_spin),
     ]
예제 #11
0
 def test_parameters_checked(self):
     """Check learner and model for various values of all parameters
     when all properties are checked
     """
     self.widget.max_features_spin[0].setCheckState(True)
     self.widget.max_depth_spin[0].setCheckState(True)
     self.parameters.extend([
         ParameterMapping("max_features", self.widget.max_features_spin[1]),
         ParameterMapping("max_depth", self.widget.max_depth_spin[1])
     ])
     self.test_parameters()
 def test_settings(self):
     """Check neighbors for various distance metrics"""
     settings = [ParameterMapping("", self.widget.distance_combo,
                                  self.widget.DISTANCES),
                 ParameterMapping("", self.widget.nn_spin)]
     for setting in settings:
         for val in setting.values:
             self.send_signal("Data", self.iris)
             self.send_signal("Reference", self.iris[:10])
             setting.set_value(val)
             self.widget.apply_button.button.click()
             self.assertIsNotNone(self.get_output("Neighbors"))
예제 #13
0
    def setUp(self):
        self.widget = self.create_widget(OWGradientBoosting,
                                         stored_settings={"auto_apply": False})
        self.init()

        controls = self.widget.editor.controls
        self.parameters = [
            ParameterMapping("n_estimators", controls.n_estimators, [500, 10]),
            ParameterMapping("learning_rate", controls.learning_rate),
            ParameterMapping("max_depth", controls.max_depth),
            ParameterMapping("min_samples_split", controls.min_samples_split),
        ]
예제 #14
0
 def test_settings(self):
     """Check neighbors for various distance metrics"""
     widget = self.widget
     settings = [
         ParameterMapping("", widget.controls.distance_index, METRICS),
         ParameterMapping("", widget.controls.n_neighbors)]
     for setting in settings:
         for val in setting.values:
             self.send_signal(widget.Inputs.data, self.iris)
             self.send_signal(widget.Inputs.reference, self.iris[:10])
             setting.set_value(val)
             widget.apply_button.button.click()
             if METRICS[widget.distance_index][0] != "Jaccard" \
                     and widget.n_neighbors != 0:
                 self.assertIsNotNone(self.get_output("Neighbors"))
예제 #15
0
    def setUp(self):
        self.widget = self.create_widget(
            OWTreeLearner, stored_settings={"auto_apply": False})
        self.init()
        self.model_class = Model
        self.parameters = [
            ParameterMapping.from_attribute(self.widget, 'max_depth'),
            ParameterMapping.from_attribute(
                self.widget, 'min_internal', 'min_samples_split'),
            ParameterMapping.from_attribute(
                self.widget, 'min_leaf', 'min_samples_leaf')]
        # NB. sufficient_majority is divided by 100, so it cannot be tested like
        # this

        self.checks = [sb.gui_element.cbox for sb in self.parameters]
예제 #16
0
    def setUp(self):
        self.widget = self.create_widget(
            OWTreeLearner, stored_settings={"auto_apply": False})
        self.init()
        self.model_class = Model

        self.parameters = [
            ParameterMapping.from_attribute(self.widget, 'max_depth'),
            ParameterMapping.from_attribute(
                self.widget, 'min_internal', 'min_samples_split'),
            ParameterMapping.from_attribute(
                self.widget, 'min_leaf', 'min_samples_leaf')]
        # NB. sufficient_majority is divided by 100, so it cannot be tested like
        # this

        self.checks = [sb.gui_element.cbox for sb in self.parameters]
예제 #17
0
 def setUp(self):
     self.widget = self.create_widget(OWAdaBoost,
                                      stored_settings={"auto_apply": False})
     self.init()
     self.parameters = [
         # TODO Due to the way params are tested on the learner and the fact
         # that learners only receive a subset of these parameters, this
         # method of testing these parameters is not viable
         # ParameterMapping('algorithm', self.widget.cls_algorithm_combo,
         #                  self.widget.algorithms),
         # ParameterMapping('loss', self.widget.reg_algorithm_combo,
         #                  self.widget.losses),
         ParameterMapping('learning_rate', self.widget.learning_rate_spin),
         ParameterMapping('n_estimators', self.widget.n_estimators_spin),
         ParameterMapping.from_attribute(self.widget, 'random_seed',
                                         'random_state')
     ]
예제 #18
0
 def setUp(self):
     self.widget = self.create_widget(OWAdaBoost,
                                      stored_settings={"auto_apply": False})
     self.init()
     self.parameters = [
         ParameterMapping('algorithm',
                          self.widget.cls_algorithm_combo,
                          self.widget.algorithms,
                          problem_type="classification"),
         ParameterMapping('loss',
                          self.widget.reg_algorithm_combo,
                          [x.lower() for x in self.widget.losses],
                          problem_type="regression"),
         ParameterMapping('learning_rate', self.widget.learning_rate_spin),
         ParameterMapping('n_estimators', self.widget.n_estimators_spin),
         ParameterMapping.from_attribute(self.widget, 'random_seed',
                                         'random_state')
     ]
예제 #19
0
    def setUp(self):
        self.widget = self.create_widget(OWRuleLearner,
                                         stored_settings={"auto_apply": False})
        self.init()

        self.radio_button_groups = self.widget.findChildren(QButtonGroup)
        self.radio_buttons = self.widget.findChildren(QRadioButton)
        self.spin_boxes = self.widget.findChildren(QSpinBox)
        self.double_spin_boxes = self.widget.findChildren(QDoubleSpinBox)
        self.combo_boxes = self.widget.findChildren(QComboBox)

        self.parameters = [
            ParameterMapping("Evaluation measure", self.combo_boxes[0],
                             self.widget.storage_measures),
            ParameterMapping("Beam width", self.spin_boxes[0]),
            ParameterMapping("Minimum rule coverage", self.spin_boxes[1]),
            ParameterMapping("Maximum rule length", self.spin_boxes[2]),
        ]
예제 #20
0
    def test_xgb_params(self):
        simulate.combobox_activate_index(self.widget.controls.method_index, 1)
        editor = self.widget.editor
        controls = editor.controls
        reg_slider = controls.lambda_index

        self.parameters = [
            ParameterMapping("n_estimators", controls.n_estimators, [500, 10]),
            ParameterMapping("learning_rate", controls.learning_rate),
            ParameterMapping("max_depth", controls.max_depth),
            ParameterMapping("reg_lambda",
                             reg_slider,
                             values=[editor.LAMBDAS[0], editor.LAMBDAS[-1]],
                             getter=lambda: editor.LAMBDAS[reg_slider.value()],
                             setter=lambda val: reg_slider.setValue(
                                 editor.LAMBDAS.index(val))),
        ]
        self.test_parameters()
예제 #21
0
    def setUp(self):
        self.widget = self.create_widget(OWLogisticRegression,
                                         stored_settings={"auto_apply": False})
        self.init()
        c_slider = self.widget.c_slider

        def setter(val):
            index = self.widget.C_s.index(val)
            self.widget.C_s[c_slider.value()]
            c_slider.setValue(index)

        self.parameters = [
            ParameterMapping('penalty', self.widget.penalty_combo,
                             self.widget.penalty_types_short),
            ParameterMapping('C',
                             c_slider,
                             values=[self.widget.C_s[0], self.widget.C_s[-1]],
                             getter=lambda: self.widget.C_s[c_slider.value()],
                             setter=setter)
        ]
예제 #22
0
    def setUp(self):
        self.widget = self.create_widget(
            OWSVM, stored_settings={"auto_apply": False})
        self.init()

        # All this nonsense is necessary because we add an `auto` option to the
        # gamma spin box
        gamma_spin = self.widget._kernel_params[0]
        values = [self.widget._default_gamma, gamma_spin.maximum()]

        def getter():
            value = gamma_spin.value()
            return gamma_spin.specialValueText() \
                if value == gamma_spin.minimum() else value

        def setter(value):
            if value == gamma_spin.specialValueText():
                gamma_spin.setValue(gamma_spin.minimum())
            else:
                gamma_spin.setValue(value)

        self.parameters = [
            ParameterMapping("C", self.widget.c_spin),
            ParameterMapping("gamma", self.widget._kernel_params[0],
                             values=values, setter=setter, getter=getter),
            ParameterMapping("coef0", self.widget._kernel_params[1]),
            ParameterMapping("degree", self.widget._kernel_params[2]),
            ParameterMapping("tol", self.widget.tol_spin),
            ParameterMapping("max_iter", self.widget.max_iter_spin[1])]
예제 #23
0
    def setUp(self):
        self.widget = self.create_widget(OWSVMRegression,
                                         stored_settings={"auto_apply": False})
        self.init()
        gamma_spin = self.widget._kernel_params[0]
        values = [self.widget._default_gamma, gamma_spin.maximum()]

        def getter():
            value = gamma_spin.value()
            return gamma_spin.specialValueText() \
                if value == gamma_spin.minimum() else value

        def setter(value):
            if value == gamma_spin.specialValueText():
                gamma_spin.setValue(gamma_spin.minimum())
            else:
                gamma_spin.setValue(value)

        self.parameters = [
            ParameterMapping("C", self.widget.epsilon_C_spin),
            ParameterMapping("epsilon", self.widget.epsilon_spin),
            ParameterMapping("gamma",
                             self.widget._kernel_params[0],
                             values=values,
                             setter=setter,
                             getter=getter),
            ParameterMapping("coef0", self.widget._kernel_params[1]),
            ParameterMapping("degree", self.widget._kernel_params[2]),
            ParameterMapping("tol", self.widget.tol_spin)
        ]
예제 #24
0
 def setUp(self):
     self.widget = self.create_widget(
         OWAdaBoost, stored_settings={"auto_apply": False})
     self.init()
     self.parameters = [
         ParameterMapping('algorithm', self.widget.cls_algorithm_combo,
                          self.widget.algorithms,
                          problem_type="classification"),
         ParameterMapping('loss', self.widget.reg_algorithm_combo,
                          [x.lower() for x in self.widget.losses],
                          problem_type="regression"),
         ParameterMapping('learning_rate', self.widget.learning_rate_spin),
         ParameterMapping('n_estimators', self.widget.n_estimators_spin),
         ParameterMapping.from_attribute(
             self.widget, 'random_seed', 'random_state')]
예제 #25
0
 def setUp(self):
     self.widget = self.create_widget(OWSGD,
                                      stored_settings={"auto_apply": False})
     self.init()
     self.parameters = [
         ParameterMapping('loss', self.widget.cls_loss_function_combo,
                          list(zip(*self.widget.cls_losses))[1]),
         ParameterMapping.from_attribute(self.widget, 'cls_epsilon',
                                         'epsilon'),
         ParameterMapping('penalty', self.widget.penalty_combo,
                          list(zip(*self.widget.penalties))[1]),
         ParameterMapping.from_attribute(self.widget, 'alpha'),
         ParameterMapping.from_attribute(self.widget, 'l1_ratio'),
         ParameterMapping('learning_rate', self.widget.learning_rate_combo,
                          list(zip(*self.widget.learning_rates))[1]),
         ParameterMapping.from_attribute(self.widget, 'eta0'),
         ParameterMapping.from_attribute(self.widget, 'power_t'),
     ]
예제 #26
0
 def setUp(self):
     self.widget = self.create_widget(OWSGD,
                                      stored_settings={"auto_apply": False})
     self.init()
     self.parameters = [
         # TODO Fix the base tests to support parameter delegation with
         # different problem types
         # ParameterMapping('loss', self.widget.loss_function_combo,
         #                  list(zip(*self.widget.losses))[1]),
         # ParameterMapping.from_attribute(self.widget, 'epsilon'),
         ParameterMapping('penalty', self.widget.penalty_combo,
                          list(zip(*self.widget.penalties))[1]),
         ParameterMapping.from_attribute(self.widget, 'alpha'),
         ParameterMapping.from_attribute(self.widget, 'l1_ratio'),
         ParameterMapping('learning_rate', self.widget.learning_rate_combo,
                          list(zip(*self.widget.learning_rates))[1]),
         ParameterMapping.from_attribute(self.widget, 'eta0'),
         ParameterMapping.from_attribute(self.widget, 'power_t'),
     ]