def test_multi_auto(X_y_multi, multiclass_core_objectives): X, y = X_y_multi objective = PrecisionMicro() automl = AutoMLSearch(X_train=X, y_train=y, problem_type='multiclass', objective=objective, max_iterations=5, n_jobs=1) automl.search() best_pipeline = automl.best_pipeline assert best_pipeline._is_fitted y_pred = best_pipeline.predict(X) assert len(np.unique(y_pred.to_series())) == 3 objective_in_additional_objectives = next((obj for obj in multiclass_core_objectives if obj.name == objective.name), None) multiclass_core_objectives.remove(objective_in_additional_objectives) for expected, additional in zip(multiclass_core_objectives, automl.additional_objectives): assert type(additional) is type(expected)
def test_precision_micro_multi(): obj = PrecisionMicro() assert obj.score(np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]), np.array([0, 0, 0, 0, 0, 0, 0, 0, 0])) == pytest.approx(1 / 3.0, EPS) assert obj.score(np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]), np.array([0, 0, 0, 1, 1, 1, 2, 2, 2])) == pytest.approx(1.0, EPS) assert obj.score(np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]), np.array([2, 2, 2, 0, 0, 0, 1, 1, 1])) == pytest.approx(0.0, EPS) assert obj.score(np.array([0, 0]), np.array([1, 2])) == pytest.approx(0.0, EPS)