Wir kümmern uns um Klassifizierungsalgorithmen In maschinellem Lernen wie logistischer Regression, Ok-Nearest-Nachbarn, unterstützen Vektorklassifizierer usw., verwenden wir keine Bewertungsmetriken wie den mittleren Absolute-Fehler (MAE), den mittleren quadratischen Fehler (MSE) oder den Stammquadrat (RMSE).
Stattdessen erstellen wir eine Verwirrungsmatrix und basierend auf der Verwirrungsmatrix, einem Klassifizierungsbericht.
In diesem Weblog wollen wir verstehen, was eine Verwirrungsmatrix ist, wie die Genauigkeit, Präzision, Rückruf und F1-Rating mithilfe der Relevanz berechnet werden und wie die relevante Metrik basierend auf den Merkmalen der Daten ausgewählt werden kann.
Um die Verwirrungsmatrix und Klassifizierungsmetriken zu verstehen, verwenden wir die Brustkrebs Wisconsin -Datensatz.
Dieser Datensatz besteht aus 569 Zeilen, und jede Zeile enthält Informationen zu verschiedenen Merkmalen eines Tumors zusammen mit seiner Diagnose, sei es bösartig (krebsartig) oder gutartig (nicht krebsartig).
Erstellen wir nun ein Klassifizierungsmodell für diese Daten, um die Tumoren anhand ihrer Merkmale zu klassifizieren.
Wir wenden nun eine logistische Regression an, um ein Modell auf diesem Datensatz zu trainieren.
Code:
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, classification_report
import seaborn as sns
import matplotlib.pyplot as plt
# Load the dataset
column_names = (
"id", "analysis", "radius_mean", "texture_mean", "perimeter_mean", "area_mean", "smoothness_mean",
"compactness_mean", "concavity_mean", "concave_points_mean", "symmetry_mean", "fractal_dimension_mean",
"radius_se", "texture_se", "perimeter_se", "area_se", "smoothness_se", "compactness_se", "concavity_se",
"concave_points_se", "symmetry_se", "fractal_dimension_se", "radius_worst", "texture_worst",
"perimeter_worst", "area_worst", "smoothness_worst", "compactness_worst", "concavity_worst",
"concave_points_worst", "symmetry_worst", "fractal_dimension_worst"
)
df = pd.read_csv("C:/wdbc.information", header=None, names=column_names)
# Drop ID column
df = df.drop(columns=("id"))
# Encode goal: M=1 (malignant), B=0 (benign)
df("analysis") = df("analysis").map({"M": 1, "B": 0})
# Break up options and goal
X = df.drop(columns=("analysis"))
y = df("analysis")
# Practice-test cut up
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, stratify=y, random_state=42)
# Scale the options
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.rework(X_test)
# Practice logistic regression
mannequin = LogisticRegression(max_iter=10000)
mannequin.match(X_train, y_train)
# Predict
y_pred = mannequin.predict(X_test)
# Confusion Matrix and Classification Report
conf_matrix = confusion_matrix(y_test, y_pred, labels=(1, 0)) # 1 = Malignant, 0 = Benign
report = classification_report(y_test, y_pred, labels=(1, 0), target_names=("Malignant", "Benign"))
# Show outcomes
print("Confusion Matrix:n", conf_matrix)
print("nClassification Report:n", report)
# Plot Confusion Matrix
sns.heatmap(conf_matrix, annot=True, fmt="d", cmap="Purples", xticklabels=("Malignant", "Benign"), yticklabels=("Malignant", "Benign"))
plt.xlabel("Predicted")
plt.ylabel("Precise")
plt.title("Confusion Matrix")
plt.tight_layout()
plt.present()
Nachdem wir nach Anwendung der logistischen Regression auf die Daten eine Verwirrungsmatrix und einen Klassifizierungsbericht generiert haben, um die Leistung des Modells zu bewerten.
Lassen Sie uns zunächst die Verwirrungsmatrix verstehen

Aus der obigen Verwirrungsmatrix
’60‘ ‚ repräsentiert die korrekt vorhergesagte maligne Tumorenwas wir uns bezeichnen „Wahre Constructive“.
‚4‘ repräsentiert die Falsch vorhergesagte gutartige Tumoren, die tatsächlich bösartige Tumoren sindwas wir uns bezeichnen „Falsche Adverse“.
‚1‘ repräsentiert die Falsch vorhergesagte maligne Tumoren, die tatsächlich gutartige Tumoren sindwas wir uns bezeichnen „Falsches Aspekte“.
‚106‘ repräsentiert die korrekt vorhergesagte gutartige Tumoren, was wir als als bezeichnen „Wahre Adverse“.
Lassen Sie uns nun sehen, was wir mit diesen Werten machen können.
Dafür betrachten wir den Klassifizierungsbericht.

Aus dem obigen Klassifizierungsbericht können wir das sagen
Für bösartig:
– Die Präzision beträgt 0,98, was bedeutet, dass es in 98% der Fälle korrekt ist, wenn das Modell den Tumor als bösartig vorhersagt.
– Der Rückruf beträgt 0,94, was bedeutet, dass das Modell 94% aller malignen Tumoren korrekt identifiziert hat.
-F1-Rating beträgt 0,96, was sowohl die Präzision als auch den Rückruf in Einklang bringt.
Für gutartig:
– Präzision beträgt 0,96, was bedeutet, dass es in 96% der Fälle korrekt ist, wenn das Modell den Tumor als gutartig vorhersagt.
– Der Rückruf beträgt 0,99, was bedeutet, dass das Modell 99% aller gutartigen Tumoren korrekt identifiziert hat.
-F1-Rating ist 0,98.
Aus dem Bericht können wir feststellen, dass die Genauigkeit des Modells 97percentbeträgt.
Wir haben auch Makro -Durchschnitt und gewichteter Durchschnitt, sehen wir, wie diese berechnet werden.
Makro -Durchschnitt
Der Makro-Durchschnitt berechnet den Durchschnitt aller Metriken (Präzision, Rückruf und F1-Rating) in beiden Klassen, die jeder Klasse gleiches Gewicht haben, unabhängig davon, wie viele Stichproben jede Klasse enthält.
Wir verwenden den Makro -Durchschnitt, wenn wir die Leistung des Modells in allen Klassen kennenlernen möchten und Klassenstörungen ignorieren möchten.
Für diese Daten:

Gewichteter Durchschnitt
Der gewichtete Durchschnitt berechnet auch den Durchschnitt aller Metriken, verleiht der Klasse jedoch mehr Proben.
Im obigen Code haben wir verwendet test_size = 0.3Dies bedeutet, dass wir 30% zum Testen beiseite legen, was bedeutet, dass wir 171 Proben aus Daten von 569 Proben für einen Testsatz verwenden.
Der Refusionsmatrix und der Klassifizierungsbericht basieren auf diesem Testsatz.
Von 171 Proben des Testsatzes haben wir 64 maligne Tumoren und 107 gutartige Tumoren.
Lassen Sie uns nun sehen, wie dieser gewichtete Durchschnitt für alle Metriken berechnet wird.

Der gewichtete Durchschnitt gibt uns eine realistischere Leistungsmaßnahme, wenn die Klassen unausgeglichene Datensätze haben.
Wir haben jetzt eine Vorstellung von jedem Begriff im Klassifizierungsbericht und wie man das Makro und die gewichteten Durchschnittswerte berechnet.
Lassen Sie uns nun sehen, wie die Verwirrungsmatrix zur Erstellung eines Klassifizierungsberichts verwendet wird.
Im Klassifizierungsbericht haben wir unterschiedliche Metriken wie Genauigkeit, Präzision usw. und diese Metriken werden unter Verwendung der Werte in der Verwirrungsmatrix berechnet.
Aus der Verwirrungsmatrix haben wir
Wahre constructive (tp) = 60
Falsche Adverse (fn) = 4
Fehlalarme (FP) = 1
Wahre Adverse (TN) = 106
Berechnen wir nun die Klassifizierungsmetriken anhand dieser Werte.

So berechnen wir die Klassifizierungsmetriken mithilfe einer Verwirrungsmatrix.
Aber warum haben wir vier verschiedene Klassifizierungsmetriken anstelle einer Metrik wie Genauigkeit? Dies liegt daran, dass die verschiedenen Metriken unterschiedliche Stärken und Schwächen des Klassifizierers auf der Grundlage des Kontextes der Daten zeigen.
Kommen wir nun zum Wisconsin -Brustkrebs -Datensatz zurück, den wir hier verwendet haben.
Als wir ein logistisches Regressionsmodell auf diese Daten angewendet haben, haben wir eine Genauigkeit von 97% erhältlich, was uns dazu bringen kann, dass das Modell effizient ist.
Betrachten wir jedoch eine andere Metrik namens „Rückruf“, die für dieses Modell 0,94 beträgt. Dies bedeutet, dass aus allen bösartigen Tumoren, die wir im Testsatz haben, das das Modell korrekt identifizieren konnte.
Hier verpasste das Modell 6% der malignen Fälle.
In realen Szenarien, hauptsächlich Gesundheitsanwendungen wie Krebserkennung, kann dies, wenn wir einen positiven Fall verpassen, die Diagnose und Behandlung verzögern.
Damit können wir verstehen, dass wir, wenn wir eine Genauigkeit von 97percenthaben, basierend auf dem Kontext der Daten durch Berücksichtigung unterschiedlicher Metriken tiefer aussehen müssen.
Additionally, was wir jetzt tun können, sollten wir einen Rückrufwert von 1,0 anstreben, was bedeutet, dass alle malignen Tumoren korrekt identifiziert werden. Wenn wir uns jedoch auf 1,0 auf 1,0 einsetzen, fällt die Präzision ab, weil das Modell kennhaftere Tumoren als bösartig klassifizieren kann.
Wenn das Modell gutartigere Tumoren als bösartig einstuft, würde es unnötige Angst geben und möglicherweise zusätzliche Checks oder Behandlungen erfordern.
Hier sollten wir den „Rückruf“ maximieren, indem wir die „Präzision“ einigermaßen hoch halten.
Wir können dies tun, indem wir die von Klassifikatoren festgelegten Schwellenwerte ändern, um die Stichproben zu klassifizieren.
Die meisten Klassifikatoren setzen den Schwellenwert auf 0,5, und wenn wir ihn 0,3 ändern, sagen wir, dass es, selbst wenn es 30% zuversichtlich ist, als bösartig klassifizieren.
Verwenden wir nun einen benutzerdefinierten Schwellenwert von 0,3.
Code:
# Practice logistic regression
mannequin = LogisticRegression(max_iter=10000)
mannequin.match(X_train, y_train)
# Predict possibilities
y_probs = mannequin.predict_proba(X_test)(:, 1)
# Apply customized threshold
threshold = 0.3
y_pred_custom = (y_probs >= threshold).astype(int)
# Classification Report
report = classification_report(y_test, y_pred_custom, target_names=("Benign", "Malignant"))
# Confusion Matrix
conf_matrix = confusion_matrix(y_test, y_pred_custom, labels=(1, 0))
# Plot Confusion Matrix
plt.determine(figsize=(6, 4))
sns.heatmap(
conf_matrix,
annot=True,
fmt="d",
cmap="Purples",
xticklabels=("Malignant", "Benign"),
yticklabels=("Malignant", "Benign")
)
plt.xlabel("Predicted")
plt.ylabel("Precise")
plt.title("Confusion Matrix (Threshold = 0.3)")
plt.tight_layout()
plt.present()
Hier haben wir einen benutzerdefinierten Schwellenwert von 0,3 angewendet und eine Verwirrungsmatrix und einen Klassifizierungsbericht erstellt.

Klassifizierungsbericht:

Hier stieg die Genauigkeit auf 98% und der Rückruf für Malignant stieg auf 97% und die Präzision blieb gleich.
Wir haben zuvor darüber diskutiert, dass die Genauigkeit möglicherweise zu einer Verringerung der Genauigkeit kommt, wenn wir versuchen, den Rückruf zu maximieren, aber hier bleibt die Genauigkeit gleich. Dies hängt von den Daten ab (ob ausgewogen oder nicht), die Vorbereitung von Schritten und das Einstellen des Schwellenwerts.
Bei solchen medizinischen Datensätzen wird der Maximierungsrückruf häufig gegenüber Genauigkeit oder Präzision bevorzugt.
Wenn wir Datensätze wie Spam -Erkennung oder Betrugserkennung berücksichtigen, bevorzugen wir Präzision und wie bei der obigen Methode, versuchen wir, die Genauigkeit zu verbessern, indem wir den Schwellenwert entsprechend einstellen und den Kompromiss zwischen Präzision und Rückruf ausbalancieren.
Wir verwenden F1-Rating, wenn die Daten unausgewogen sind und wenn wir sowohl Präzision als auch erinnern, wo weder falsch constructive noch falsche Adverse ignoriert werden können.
Datensatzquelle
Wisconsin Brustkrebs Datensatz
W. W. W., O. Mangasarian, N. Avenue & W. Avenue (1993). Brustkrebs Wisconsin (diagnostisch) (Datensatz). UCI maschinelles Lernen Repository. https://doi.org/10.24432/c5dw2b.
Dieser Datensatz ist unter einem lizenziert Inventive Commons Attribution 4.0 Worldwide (CC für 4.0) Lizenz und kann frei für kommerzielle oder pädagogische Zwecke verwendet werden, solange die ursprüngliche Quelle ordnungsgemäß eingestuft wird.
Hier haben wir diskutiert, was eine Verwirrungsmatrix ist und wie sie verwendet wird, um die verschiedenen Klassifizierungsmetriken wie Genauigkeit, Präzision, Rückruf und F1-Rating zu berechnen.
Wir haben auch untersucht, wann die Klassifizierungsmetrik priorisieren soll, wobei der Wisconsin Most cancers -Datensatz als Beispiel verwendet wird, wo wir die Maximierung des Rückrufs bevorzugten.
Ich hoffe, Sie haben diesen Weblog hilfreich gefunden, um Verwirrungsmatrix und Klassifizierungsmetriken klarer zu verstehen.
Danke fürs Lesen.
