def test_confusion_matrix_random(n_samples, dtype, problem_type): upper_range = 2 if problem_type == 'binary' else 1000 y_true, y_pred, _, _ = generate_random_labels( lambda rng: rng.randint(0, upper_range, n_samples).astype(dtype)) cm = confusion_matrix(y_true, y_pred) ref = sk_confusion_matrix(y_true, y_pred) cp.testing.assert_array_almost_equal(ref, cm, decimal=4)
def test_confusion_matrix_multiclass_subset_labels(labels): y_true, y_pred, _, _ = generate_random_labels( lambda rng: rng.randint(0, 3, 10).astype(np.int32)) ref = sk_confusion_matrix(y_true, y_pred, labels=labels) labels = cp.array(labels, dtype=np.int32) cm = confusion_matrix(y_true, y_pred, labels=labels) cp.testing.assert_array_almost_equal(ref, cm, decimal=4)
def test_confusion_matrix(): y_true = cp.array([2, 0, 2, 2, 0, 1]) y_pred = cp.array([0, 0, 2, 2, 0, 2]) cm = confusion_matrix(y_true, y_pred) ref = cp.array([[2, 0, 0], [0, 0, 1], [1, 0, 2]]) cp.testing.assert_array_equal(cm, ref)
def test_confusion_matrix_random_weights(n_samples, dtype, weights_dtype): y_true, y_pred, _, _ = generate_random_labels( lambda rng: rng.randint(0, 10, n_samples).astype(dtype)) if weights_dtype == 'int': sample_weight = np.random.RandomState(0).randint(0, 10, n_samples) else: sample_weight = np.random.RandomState(0).rand(n_samples) cm = confusion_matrix(y_true, y_pred, sample_weight=sample_weight) ref = sk_confusion_matrix(y_true, y_pred, sample_weight=sample_weight) cp.testing.assert_array_almost_equal(ref, cm, decimal=4)
def build_and_predict_model(ml_input_df): """ Create a standardized feature matrix X and target array y. Returns the model and accuracy statistics """ import cuml from cuml.metrics import confusion_matrix feature_names = ["college_education", "male" ] + ["clicks_in_%d" % i for i in range(1, 8)] X = ml_input_df[feature_names] # Standardize input matrix X = (X - X.mean()) / X.std() y = ml_input_df["clicks_in_category"] model = cuml.LogisticRegression( tol=convergence_tol, penalty="none", solver="qn", fit_intercept=True, max_iter=iterations, C=C, ) model.fit(X, y) # # Predict and evaluate accuracy # (Should be 1.0) at SF-1 # results_dict = {} y_pred = model.predict(X) results_dict["auc"] = roc_auc_score(y.to_array(), y_pred.to_array()) results_dict["precision"] = cupy_precision_score(cp.asarray(y), cp.asarray(y_pred)) results_dict["confusion_matrix"] = confusion_matrix( cp.asarray(y, dtype="int32"), cp.asarray(y_pred, dtype="int32")) results_dict["output_type"] = "supervised" return results_dict
def test_confusion_matrix_normalize(normalize, expected_results): y_test = cp.array([0, 1, 2] * 6) y_pred = cp.array(list(chain(*permutations([0, 1, 2])))) cm = confusion_matrix(y_test, y_pred, normalize=normalize) cp.testing.assert_allclose(cm, cp.array(expected_results))
def test_confusion_matrix_binary(): y_true = cp.array([0, 1, 0, 1]) y_pred = cp.array([1, 1, 1, 0]) tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel() ref = cp.array([0, 2, 1, 1]) cp.testing.assert_array_equal(ref, cp.array([tn, fp, fn, tp]))
def _confusion_matrix(actuals, preds): return confusion_matrix(y_true=actuals, y_pred=preds)