def test_multiclass_prediction(self, predict_mock): predicted_probabilities = [[0, 0, 0.99], [0, 0.99, 0], [0.99, 0, 0], [0, 0.99, 0], [0, 0, 0.99]] predicted_indexes = [2, 1, 0, 1, 2] expected_result = ['c', 'b', 'a', 'b', 'c'] predict_mock.return_value = np.array(predicted_probabilities) classifier = AutoMLClassifier( time_left_for_this_task=1, per_run_time_limit=1, backend=None, ) classifier.InputValidator.validate_target( pd.DataFrame(expected_result, dtype='category'), is_classification=True, ) actual_result = classifier.predict([None] * len(predicted_indexes)) np.testing.assert_array_equal(expected_result, actual_result)
def test_multiclass_prediction(self, predict_mock): classes = [['a', 'b', 'c']] predicted_probabilities = [[0, 0, 0.99], [0, 0.99, 0], [0.99, 0, 0], [0, 0.99, 0], [0, 0, 0.99]] predicted_indexes = [2, 1, 0, 1, 2] expected_result = ['c', 'b', 'a', 'b', 'c'] predict_mock.return_value = np.array(predicted_probabilities) classifier = AutoMLClassifier( time_left_for_this_task=1, per_run_time_limit=1, backend=None, ) classifier._classes = [np.array(classes)] classifier._n_outputs = 1 classifier._n_classes = np.array([3]) actual_result = classifier.predict([None] * len(predicted_indexes)) np.testing.assert_array_equal(expected_result, actual_result)
def test_multilabel_prediction(predict_mock, backend, dask_client): predicted_probabilities = [[0.99, 0], [0.99, 0], [0, 0.99], [0.99, 0.99], [0.99, 0.99]] predicted_indexes = np.array([[1, 0], [1, 0], [0, 1], [1, 1], [1, 1]]) expected_result = np.array([[2, 13], [2, 13], [1, 17], [2, 17], [2, 17]]) predict_mock.return_value = np.array(predicted_probabilities) classifier = AutoMLClassifier( time_left_for_this_task=1, per_run_time_limit=1, backend=backend, dask_client=dask_client, ) classifier.InputValidator.validate_target( pd.DataFrame(expected_result, dtype='int64'), is_classification=True, ) actual_result = classifier.predict([None] * len(predicted_indexes)) np.testing.assert_array_equal(expected_result, actual_result)
def test_multilabel_prediction(predict_mock, dask_client): predicted_probabilities = [[0.99, 0], [0.99, 0], [0, 0.99], [0.99, 0.99], [0.99, 0.99]] predicted_indexes = np.array([[1, 0], [1, 0], [0, 1], [1, 1], [1, 1]]) predict_mock.return_value = np.array(predicted_probabilities) classifier = AutoMLClassifier( time_left_for_this_task=1, per_run_time_limit=1, dask_client=dask_client, ) classifier.InputValidator = InputValidator(is_classification=True) classifier.InputValidator.target_validator.fit( pd.DataFrame(predicted_indexes, dtype='int64'), ) classifier.InputValidator._is_fitted = True assert classifier.InputValidator.target_validator.type_of_target == 'multilabel-indicator' actual_result = classifier.predict([None] * len(predicted_indexes)) np.testing.assert_array_equal(predicted_indexes, actual_result)
def test_multilabel_prediction(self, predict_mock): classes = [[1, 2], [13, 17]] predicted_probabilities = [[0.99, 0], [0.99, 0], [0, 0.99], [0.99, 0.99], [0.99, 0.99]] predicted_indexes = np.array([[1, 0], [1, 0], [0, 1], [1, 1], [1, 1]]) expected_result = np.array([[2, 13], [2, 13], [1, 17], [2, 17], [2, 17]]) predict_mock.return_value = np.array(predicted_probabilities) classifier = AutoMLClassifier( time_left_for_this_task=1, per_run_time_limit=1, backend=None, ) classifier._classes = list(map(np.array, classes)) classifier._n_outputs = 2 classifier._n_classes = np.array([3, 2]) actual_result = classifier.predict([None] * len(predicted_indexes)) np.testing.assert_array_equal(expected_result, actual_result)
def test_input_and_target_types(dask_client, X, y, task): if task in CLASSIFICATION_TASKS: automl = AutoMLClassifier( time_left_for_this_task=15, per_run_time_limit=5, dask_client=dask_client, ) else: automl = AutoMLRegressor( time_left_for_this_task=15, per_run_time_limit=5, dask_client=dask_client, ) # To save time fitting and only validate the inputs we only return # the configuration space automl.fit(X, y, only_return_configuration_space=True) assert automl._task == task assert automl._metric.name == default_metric_for_task[task].name