Skip to content

Commit ec73c5e

Browse files
committed
owsvm: degree is an integer
1 parent 09df730 commit ec73c5e

File tree

3 files changed

+29
-3
lines changed

3 files changed

+29
-3
lines changed

Orange/widgets/model/owsvm.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ class Outputs(OWBaseLearner.Outputs):
3535
class Warning(OWBaseLearner.Warning):
3636
sparse_data = Msg('Input data is sparse, default preprocessing is to scale it.')
3737

38+
settings_version = 2
39+
3840
#: Different types of SVMs
3941
SVM, Nu_SVM = range(2)
4042
#: SVM type
@@ -156,8 +158,8 @@ def _add_kernel_box(self):
156158
gamma.setSpecialValueText(self._default_gamma)
157159
coef0 = gui.doubleSpin(
158160
inbox, self, "coef0", 0.0, 10.0, 0.01, label=" c: ", **common)
159-
degree = gui.doubleSpin(
160-
inbox, self, "degree", 0.0, 10.0, 0.5, label=" d: ", **common)
161+
degree = gui.spin(
162+
inbox, self, "degree", 0, 10, 1, label=" d: ", **common)
161163
self._kernel_params = [gamma, coef0, degree]
162164
gui.rubber(parambox)
163165

@@ -255,6 +257,12 @@ def _report_kernel_parameters(self, items):
255257
items["Kernel"] = "Sigmoid, tanh({g:.4} x⋅y + {c:.4})".format(
256258
g=gamma, c=self.coef0)
257259

260+
@classmethod
261+
def migrate_settings(cls, settings, version):
262+
if version < 2:
263+
if "degree" in settings:
264+
settings["degree"] = int(settings["degree"])
265+
258266

259267
if __name__ == "__main__": # pragma: no cover
260268
WidgetPreview(OWSVM).run(Table("iris"))

Orange/widgets/model/tests/test_owgradientboosting.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import json
21
import unittest
32
import sys
43
from typing import Type

Orange/widgets/model/tests/test_owsvm.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,22 @@ def test_sparse_warning(self):
102102
data.X = csr_matrix(data.X)
103103
self.send_signal(self.widget.Inputs.data, data)
104104
self.assertTrue(self.widget.Warning.sparse_data.is_shown())
105+
106+
def test_change_degree(self):
107+
data = Table("iris")
108+
self.send_signal(self.widget.Inputs.data, data)
109+
self.widget.kernel_box.buttons[1].click()
110+
degree_spin = self.widget._kernel_params[2]
111+
degree_spin.stepUp()
112+
self.assertEqual(self.widget.degree, 4)
113+
self.click_apply()
114+
self.wait_until_stop_blocking()
115+
self.assertFalse(self.widget.Error.fitting_failed.is_shown())
116+
117+
def test_migrate_degree(self):
118+
settings = {}
119+
OWSVM.migrate_settings(settings, 1)
120+
121+
settings = {"degree": 4.0}
122+
OWSVM.migrate_settings(settings, 1)
123+
self.assertIsInstance(settings["degree"], int)

0 commit comments

Comments
 (0)