From 13243bd3e33f8cc4cf348cb5b8e44799d9445e81 Mon Sep 17 00:00:00 2001 From: Joshua Wendland <80349780+joshuawe@users.noreply.github.com> Date: Mon, 18 Dec 2023 15:23:08 +0100 Subject: [PATCH] multi histogram: add color scheme and update docs --- images/multiclass/histogram_4_classes.png | Bin 43764 -> 41427 bytes notebooks/multiclass_classification.ipynb | 4 +-- plotsandgraphs/multiclass_classifier.py | 33 ++++++++++++++++++---- tests/test_multiclass_classifier.py | 2 +- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/images/multiclass/histogram_4_classes.png b/images/multiclass/histogram_4_classes.png index 9b700960d085bbdb64e0469553df67b6c724304c..014e28a6da70b242c6a99bb0e0b77c45c8f91afc 100644 GIT binary patch literal 41427 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 literal 43764 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" ] diff --git a/plotsandgraphs/multiclass_classifier.py b/plotsandgraphs/multiclass_classifier.py index f4077f1..1c3cca0 100644 --- a/plotsandgraphs/multiclass_classifier.py +++ b/plotsandgraphs/multiclass_classifier.py @@ -268,11 +268,32 @@ def auroc_metric_function(y_true, y_score, average, multi_class): def plot_y_prob_histogram( - y_true: np.ndarray, y_prob: Optional[np.ndarray] = None, save_fig_path=None + y_true: np.ndarray, y_score: Optional[np.ndarray] = None, save_fig_path: Optional[str]=None ) -> Figure: + """ + Histogram plot that is intended to show the distribution of the predicted probabilities for different classes, where the the different classes (y_true==0 and y_true==1) are plotted in different colors. + Limitations: Does not work for samples, that can be part of multiple classes (e.g. multilabel classification). + + Parameters + ---------- + y_true : np.ndarray + The actual labels of the data. Either 0 or 1. One hot encoded. + y_score : Optional[np.ndarray], optional + The y_scores as predictions of a model for a class, by default None + save_fig_path : Optional[str], optional + Path to folder where the figure should be saved. If None then plot is not saved, by default None. + + Returns + ------- + Figure + The figure of the histogram plot. + """ + num_classes = y_true.shape[-1] class_labels = [f"Class {i}" for i in range(num_classes)] + cmap, colors = get_cmap("roma", n_colors=2) # 2 colors for y==0 and y==1 per class + # Aiming for a square plot plot_cols = np.ceil(np.sqrt(num_classes)).astype(int) # Number of plots in a row # noqa plot_rows = np.ceil(num_classes / plot_cols).astype(int) # Number of plots in a column # noqa @@ -294,15 +315,16 @@ def plot_y_prob_histogram( ax.axis("off") continue - if y_prob is not None: + if y_score is not None: y_true_i = y_true[:, i] - y_prob_i = y_prob[:, i] + y_prob_i = y_score[:, i] ax.hist( y_prob_i[y_true_i == 0], bins=10, label="$\\hat{y} = 0$", alpha=alpha, - edgecolor="midnightblue", + edgecolor="black", + color=colors[0], linewidth=2, rwidth=1, ) @@ -311,7 +333,8 @@ def plot_y_prob_histogram( bins=10, label="$\\hat{y} = 1$", alpha=alpha, - edgecolor="midnightblue", + edgecolor="black", + color=colors[1], linewidth=2, rwidth=1, ) diff --git a/tests/test_multiclass_classifier.py b/tests/test_multiclass_classifier.py index 53196f2..c362fc1 100644 --- a/tests/test_multiclass_classifier.py +++ b/tests/test_multiclass_classifier.py @@ -57,7 +57,7 @@ def test_hist_plot(): for num_classes in [1, 2, 3, 4, 5, 10, 16, 25]: y_true, y_prob = random_data_multiclass_classifier(num_classes=num_classes) print(TEST_RESULTS_PATH) - multiclass.plot_y_prob_histogram(y_true=y_true, y_prob=y_prob, save_fig_path=TEST_RESULTS_PATH / f"histogram_{num_classes}_classes.png") + multiclass.plot_y_prob_histogram(y_true=y_true, y_score=y_prob, save_fig_path=TEST_RESULTS_PATH / f"histogram_{num_classes}_classes.png") # multiclass.plot_y_prob_histogram(y_prob=y_prob, save_fig_path=TEST_RESULTS_PATH / "histogram_classes.png")