def test_optimizable_threshold_enabled(mock_fit, mock_score, mock_predict_proba, mock_encode_targets, mock_optimize_threshold, X_y_binary, caplog): mock_optimize_threshold.return_value = 0.8 X, y = X_y_binary automl = AutoMLSearch(X_train=X, y_train=y, problem_type='binary', objective='precision', max_iterations=1, optimize_thresholds=True) mock_score.return_value = {'precision': 1.0} automl.search() mock_fit.assert_called() mock_score.assert_called() mock_predict_proba.assert_called() mock_optimize_threshold.assert_called() assert automl.best_pipeline.threshold == 0.8 assert automl.results['pipeline_results'][0]['cv_data'][0].get( 'binary_classification_threshold') == 0.8 assert automl.results['pipeline_results'][0]['cv_data'][1].get( 'binary_classification_threshold') == 0.8 assert automl.results['pipeline_results'][0]['cv_data'][2].get( 'binary_classification_threshold') == 0.8 automl.describe_pipeline(0) out = caplog.text assert "Objective to optimize binary classification pipeline thresholds for" in out
def test_describe_pipeline_objective_ordered(X_y_binary, caplog): X, y = X_y_binary automl = AutoMLSearch(X_train=X, y_train=y, problem_type='binary', objective='AUC', max_iterations=2, n_jobs=1) automl.search() automl.describe_pipeline(0) out = caplog.text out_stripped = " ".join(out.split()) objectives = [get_objective(obj) for obj in automl.additional_objectives] objectives_names = [obj.name for obj in objectives] expected_objective_order = " ".join(objectives_names) assert expected_objective_order in out_stripped
def test_additional_objectives(X_y_binary): X, y = X_y_binary objective = FraudCost(retry_percentage=.5, interchange_fee=.02, fraud_payout_percentage=.75, amount_col=10) automl = AutoMLSearch(X_train=X, y_train=y, problem_type='binary', objective='F1', max_iterations=2, additional_objectives=[objective], n_jobs=1) automl.search() results = automl.describe_pipeline(0, return_dict=True) assert 'Fraud Cost' in list(results["cv_data"][0]["all_objective_scores"].keys())
def test_get_pipeline_none(X_y_binary): X, y = X_y_binary automl = AutoMLSearch(X_train=X, y_train=y, problem_type='binary') with pytest.raises(PipelineNotFoundError, match="Pipeline not found"): automl.describe_pipeline(0)