1111
1212from orangewidget .utils .combobox import qcombobox_emit_activated
1313
14- from Orange .data import Table , DiscreteVariable , Domain , ContinuousVariable
15- import Orange .evaluation
16- import Orange .classification
17- from Orange .evaluation import Results
14+ from Orange .data import Domain , ContinuousVariable
1815from Orange .evaluation .performance_curves import Curves
1916from Orange .widgets .evaluate .tests .base import EvaluateTest
2017from Orange .widgets .evaluate .owcalibrationplot import OWCalibrationPlot
21- from Orange .widgets .tests .base import WidgetTest
22- from Orange .tests import test_filename
2318
2419
25- class TestOWCalibrationPlot (WidgetTest , EvaluateTest ):
20+ class TestOWCalibrationPlot (EvaluateTest ):
2621 def setUp (self ):
2722 super ().setUp ()
28-
29- n , p = (0 , 1 )
30- actual , probs = np .array ([
31- (p , .8 ), (n , .7 ), (p , .6 ), (p , .55 ), (p , .54 ), (n , .53 ), (n , .52 ),
32- (p , .51 ), (n , .505 ), (p , .4 ), (n , .39 ), (p , .38 ), (n , .37 ),
33- (n , .36 ), (n , .35 ), (p , .34 ), (n , .33 ), (p , .30 ), (n , .1 )]).T
34- self .curves = Curves (actual , probs )
35- probs2 = (probs + 0.5 ) / 2 + 1
36- self .curves2 = Curves (actual , probs2 )
37- pred = probs > 0.5
38- pred2 = probs2 > 0.5
39- probs = np .vstack ((1 - probs , probs )).T
40- probs2 = np .vstack ((1 - probs2 , probs2 )).T
41- domain = Domain ([], DiscreteVariable ("y" , values = ("a" , "b" )))
42- self .results = Results (
43- domain = domain ,
44- actual = actual ,
45- folds = np .array ([Ellipsis ]),
46- models = np .array ([[Mock (), Mock ()]]),
47- row_indices = np .arange (19 ),
48- predicted = np .array ((pred , pred2 )),
49- probabilities = np .array ([probs , probs2 ]))
50-
51- self .lenses = data = Table (test_filename ("datasets/lenses.tab" ))
52- majority = Orange .classification .MajorityLearner ()
53- majority .name = "majority"
54- knn3 = Orange .classification .KNNLearner (n_neighbors = 3 )
55- knn3 .name = "knn-3"
56- knn1 = Orange .classification .KNNLearner (n_neighbors = 1 )
57- knn1 .name = "knn-1"
58- self .lenses_results = Orange .evaluation .TestOnTestData (
59- store_data = True , store_models = True )(
60- data = data [::2 ], test_data = data [1 ::2 ],
61- learners = [majority , knn3 , knn1 ])
62- self .lenses_results .learner_names = ["majority" , "knn-3" , "knn-1" ]
63-
6423 self .widget = self .create_widget (OWCalibrationPlot ) # type: OWCalibrationPlot
6524 warnings .filterwarnings ("ignore" , ".*" , ConvergenceWarning )
6625
@@ -382,6 +341,8 @@ def test_threshold_flips_on_two_classes(self):
382341 @patch ("Orange.widgets.evaluate.owcalibrationplot.CalibratedLearner" )
383342 def test_apply_no_output (self , * _ ):
384343 """Test no output warnings"""
344+ # Similar to test_owcalibrationplot, but just a little different, hence
345+ # pylint: disable=duplicate-code
385346 widget = self .widget
386347 model_list = widget .controls .selected_classifiers
387348
@@ -395,7 +356,7 @@ def test_apply_no_output(self, *_):
395356 multiple_selected :
396357 "select a single model - the widget can output only one" ,
397358 non_binary_class :
398- "cannot calibrate non-binary classes " }
359+ "cannot calibrate non-binary models " }
399360
400361 def test_shown (shown ):
401362 widget_msg = widget .Information .no_output
0 commit comments