def test_refit_shuffle_on_fail(self): backend_api = self._create_backend('test_refit_shuffle_on_fail') failing_model = unittest.mock.Mock() failing_model.fit.side_effect = [ValueError(), ValueError(), None] failing_model.fit_transformer.side_effect = [ ValueError(), ValueError(), (None, {})] failing_model.get_max_iter.return_value = 100 auto = AutoML(backend_api, 20, 5) ensemble_mock = unittest.mock.Mock() ensemble_mock.get_selected_model_identifiers.return_value = [(1, 1, 50.0)] auto.ensemble_ = ensemble_mock for budget_type in [None, 'iterations']: auto._budget_type = budget_type auto.models_ = {(1, 1, 50.0): failing_model} # Make sure a valid 2D array is given to automl X = np.array([1, 2, 3]).reshape(-1, 1) y = np.array([1, 2, 3]) auto.refit(X, y) self.assertEqual(failing_model.fit.call_count, 3) self.assertEqual(failing_model.fit_transformer.call_count, 3) del auto self._tearDown(backend_api.temporary_directory) self._tearDown(backend_api.output_directory)
def test_refit_shuffle_on_fail(backend, dask_client): failing_model = unittest.mock.Mock() failing_model.fit.side_effect = [ValueError(), ValueError(), None] failing_model.fit_transformer.side_effect = [ ValueError(), ValueError(), (None, {})] failing_model.get_max_iter.return_value = 100 auto = AutoML(backend, 30, 5, dask_client=dask_client) ensemble_mock = unittest.mock.Mock() ensemble_mock.get_selected_model_identifiers.return_value = [(1, 1, 50.0)] auto.ensemble_ = ensemble_mock auto.InputValidator = InputValidator() for budget_type in [None, 'iterations']: auto._budget_type = budget_type auto.models_ = {(1, 1, 50.0): failing_model} # Make sure a valid 2D array is given to automl X = np.array([1, 2, 3]).reshape(-1, 1) y = np.array([1, 2, 3]) auto.InputValidator.fit(X, y) auto.refit(X, y) assert failing_model.fit.call_count == 3 assert failing_model.fit_transformer.call_count == 3 del auto
def test_refit_shuffle_on_fail(self): output = os.path.join(self.test_dir, '..', '.tmp_refit_shuffle_on_fail') context = BackendContext(output, output, False, False) backend = Backend(context) failing_model = unittest.mock.Mock() failing_model.fit.side_effect = [ValueError(), ValueError(), None] auto = AutoML(backend, 20, 5) ensemble_mock = unittest.mock.Mock() auto.ensemble_ = ensemble_mock ensemble_mock.get_model_identifiers.return_value = [1] auto.models_ = {1: failing_model} X = np.array([1, 2, 3]) y = np.array([1, 2, 3]) auto.refit(X, y) self.assertEqual(failing_model.fit.call_count, 3)
def test_refit_shuffle_on_fail(self): output = os.path.join(self.test_dir, '..', '.tmp_refit_shuffle_on_fail') context = BackendContext(output, output, False, False) backend = Backend(context) failing_model = unittest.mock.Mock() failing_model.fit.side_effect = [ValueError(), ValueError(), None] auto = AutoML(backend, 30, 30) ensemble_mock = unittest.mock.Mock() auto.ensemble_ = ensemble_mock ensemble_mock.get_model_identifiers.return_value = [1] auto.models_ = {1: failing_model} X = np.array([1, 2, 3]) y = np.array([1, 2, 3]) auto.refit(X, y) self.assertEqual(failing_model.fit.call_count, 3)
def test_refit_shuffle_on_fail(self): backend_api = self._create_backend('test_refit_shuffle_on_fail') failing_model = unittest.mock.Mock() failing_model.fit.side_effect = [ValueError(), ValueError(), None] auto = AutoML(backend_api, 20, 5) ensemble_mock = unittest.mock.Mock() auto.ensemble_ = ensemble_mock ensemble_mock.get_selected_model_identifiers.return_value = [1] auto.models_ = {1: failing_model} X = np.array([1, 2, 3]) y = np.array([1, 2, 3]) auto.refit(X, y) self.assertEqual(failing_model.fit.call_count, 3) del auto self._tearDown(backend_api.temporary_directory) self._tearDown(backend_api.output_directory)