66
77from Orange .classification import GBClassifier
88
9- try :
10- from Orange .classification import XGBClassifier , XGBRFClassifier
11- except ImportError :
12- XGBClassifier = XGBRFClassifier = None
13- try :
14- from Orange .classification import CatGBClassifier
15- except ImportError :
16- CatGBClassifier = None
9+ from Orange .classification import XGBClassifier , XGBRFClassifier
10+ from Orange .classification import CatGBClassifier
1711from Orange .data import Table
1812from Orange .modelling import GBLearner
1913from Orange .preprocess .score import Scorer
2014from Orange .regression import GBRegressor
2115
22- try :
23- from Orange .regression import XGBRegressor , XGBRFRegressor
24- except ImportError :
25- XGBRegressor = XGBRFRegressor = None
26- try :
27- from Orange .regression import CatGBRegressor
28- except ImportError :
29- CatGBRegressor = None
16+ from Orange .regression import XGBRegressor , XGBRFRegressor
17+ from Orange .regression import CatGBRegressor
3018from Orange .widgets .model .owgradientboosting import OWGradientBoosting , \
3119 LearnerItemModel , GBLearnerEditor , XGBLearnerEditor , XGBRFLearnerEditor , \
3220 CatGBLearnerEditor , BaseEditor
@@ -65,16 +53,6 @@ def test_model(self):
6553 self .assertEqual (model .item (i ).isEnabled (),
6654 classifiers [i ] is not None )
6755
68- @patch ("Orange.widgets.model.owgradientboosting.LearnerItemModel.LEARNERS" ,
69- [(GBLearner , "" , "" ),
70- (None , "Gradient Boosting (catboost)" , "catboost" )])
71- def test_missing_lib (self ):
72- widget = create_parent (CatGBLearnerEditor )
73- model = LearnerItemModel (widget )
74- self .assertEqual (model .rowCount (), 2 )
75- self .assertTrue (model .item (0 ).isEnabled ())
76- self .assertFalse (model .item (1 ).isEnabled ())
77-
7856
7957class BaseEditorTest (GuiTest ):
8058 EditorClass : Type [BaseEditor ] = None
@@ -146,7 +124,6 @@ def test_arguments(self):
146124 "colsample_bynode" : 1 , "subsample" : 1 , "random_state" : 0 }
147125 self .assertDictEqual (self .editor .get_arguments (), args )
148126
149- @unittest .skipIf (XGBClassifier is None , "Missing 'xgboost' package" )
150127 def test_learner_parameters (self ):
151128 params = (("Method" , "Extreme Gradient Boosting (xgboost)" ),
152129 ("Number of trees" , 100 ),
@@ -160,7 +137,6 @@ def test_learner_parameters(self):
160137 ("Fraction of features for each split" , 1 ))
161138 self .assertTupleEqual (self .editor .get_learner_parameters (), params )
162139
163- @unittest .skipIf (XGBClassifier is None , "Missing 'xgboost' package" )
164140 def test_default_parameters_cls (self ):
165141 data = Table ("heart_disease" )
166142 booster = XGBClassifier ()
@@ -178,7 +154,6 @@ def test_default_parameters_cls(self):
178154 self .assertEqual (int (tp ["colsample_bylevel" ]), self .editor .colsample_bylevel )
179155 self .assertEqual (int (tp ["colsample_bynode" ]), self .editor .colsample_bynode )
180156
181- @unittest .skipIf (XGBRegressor is None , "Missing 'xgboost' package" )
182157 def test_default_parameters_reg (self ):
183158 data = Table ("housing" )
184159 booster = XGBRegressor ()
@@ -206,7 +181,6 @@ def test_arguments(self):
206181 "colsample_bynode" : 1 , "subsample" : 1 , "random_state" : 0 }
207182 self .assertDictEqual (self .editor .get_arguments (), args )
208183
209- @unittest .skipIf (XGBRFClassifier is None , "Missing 'xgboost' package" )
210184 def test_learner_parameters (self ):
211185 params = (("Method" ,
212186 "Extreme Gradient Boosting Random Forest (xgboost)" ),
@@ -221,7 +195,6 @@ def test_learner_parameters(self):
221195 ("Fraction of features for each split" , 1 ))
222196 self .assertTupleEqual (self .editor .get_learner_parameters (), params )
223197
224- @unittest .skipIf (XGBRFClassifier is None , "Missing 'xgboost' package" )
225198 def test_default_parameters_cls (self ):
226199 data = Table ("heart_disease" )
227200 booster = XGBRFClassifier ()
@@ -239,7 +212,6 @@ def test_default_parameters_cls(self):
239212 self .assertEqual (int (tp ["colsample_bylevel" ]), self .editor .colsample_bylevel )
240213 self .assertEqual (int (tp ["colsample_bynode" ]), self .editor .colsample_bynode )
241214
242- @unittest .skipIf (XGBRFRegressor is None , "Missing 'xgboost' package" )
243215 def test_default_parameters_reg (self ):
244216 data = Table ("housing" )
245217 booster = XGBRFRegressor ()
@@ -266,7 +238,6 @@ def test_arguments(self):
266238 "reg_lambda" : 3 , "colsample_bylevel" : 1 , "random_state" : 0 }
267239 self .assertDictEqual (self .editor .get_arguments (), args )
268240
269- @unittest .skipIf (CatGBClassifier is None , "Missing 'catboost' package" )
270241 def test_learner_parameters (self ):
271242 params = (("Method" , "Gradient Boosting (catboost)" ),
272243 ("Number of trees" , 100 ),
@@ -277,7 +248,6 @@ def test_learner_parameters(self):
277248 ("Fraction of features for each tree" , 1 ))
278249 self .assertTupleEqual (self .editor .get_learner_parameters (), params )
279250
280- @unittest .skipIf (CatGBClassifier is None , "Missing 'catboost' package" )
281251 def test_default_parameters_cls (self ):
282252 data = Table ("heart_disease" )
283253 booster = CatGBClassifier ()
@@ -291,7 +261,6 @@ def test_default_parameters_cls(self):
291261 self .assertEqual (self .editor .learning_rate , 0.3 )
292262 # params["learning_rate"] is automatically defined so don't test it
293263
294- @unittest .skipIf (CatGBRegressor is None , "Missing 'catboost' package" )
295264 def test_default_parameters_reg (self ):
296265 data = Table ("housing" )
297266 booster = CatGBRegressor ()
@@ -305,6 +274,7 @@ def test_default_parameters_reg(self):
305274 self .assertEqual (self .editor .learning_rate , 0.3 )
306275 # params["learning_rate"] is automatically defined so don't test it
307276
277+
308278class TestOWGradientBoosting (WidgetTest , WidgetLearnerTestMixin ):
309279 def setUp (self ):
310280 self .widget = self .create_widget (OWGradientBoosting ,
@@ -328,7 +298,6 @@ def test_datasets(self):
328298 for ds in datasets .datasets ():
329299 self .send_signal (self .widget .Inputs .data , ds )
330300
331- @unittest .skipIf (XGBClassifier is None , "Missing 'xgboost' package" )
332301 def test_xgb_params (self ):
333302 simulate .combobox_activate_index (self .widget .controls .method_index , 1 )
334303 editor = self .widget .editor
@@ -350,27 +319,11 @@ def test_xgb_params(self):
350319 def test_methods (self ):
351320 self .send_signal (self .widget .Inputs .data , self .data )
352321 method_cb = self .widget .controls .method_index
353- for i , (cls , _ , _ ) in enumerate (LearnerItemModel .LEARNERS ):
354- if cls is None :
355- continue
322+ for i , cls in enumerate (LearnerItemModel .LEARNERS ):
356323 simulate .combobox_activate_index (method_cb , i )
357324 self .click_apply ()
358325 self .assertIsInstance (self .widget .learner , cls )
359326
360- def test_missing_lib (self ):
361- modules = {k : v for k , v in sys .modules .items ()
362- if "orange" not in k .lower ()} # retain built-ins
363- modules ["xgboost" ] = None
364- modules ["catboost" ] = None
365- # pylint: disable=reimported,redefined-outer-name
366- # pylint: disable=import-outside-toplevel
367- with patch .dict (sys .modules , modules , clear = True ):
368- from Orange .widgets .model .owgradientboosting import \
369- OWGradientBoosting
370- widget = self .create_widget (OWGradientBoosting ,
371- stored_settings = {"method_index" : 3 })
372- self .assertEqual (widget .method_index , 0 )
373-
374327
375328if __name__ == "__main__" :
376329 unittest .main ()
0 commit comments