Klasswahrscheinlichkeiten mit VotingClassifier

Machine LearningMachine LearningBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir lernen, wie man die Klasswahrscheinlichkeiten berechnet, die vom VotingClassifier in Scikit-Learn ausgegeben werden, darstellt. Wir werden drei verschiedene Klassifizierer verwenden, darunter LogisticRegression, GaussianNB und RandomForestClassifier, und die vorhergesagten Wahrscheinlichkeiten mithilfe des VotingClassifier durchschnittlich berechnen. Anschließend werden wir die Wahrscheinlichkeitsgewichtung visualisieren, indem wir jeden Klassifizierer auf dem Trainingsset anpassen und die vorhergesagten Klasswahrscheinlichkeiten für die erste Probe in der Datenmenge darstellen.

VM-Tipps

Nachdem die VM gestartet ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen von Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/linear_model("Linear Models") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/naive_bayes("Naive Bayes") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/ensemble("Ensemble Methods") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/linear_model -.-> lab-49329{{"Klasswahrscheinlichkeiten mit VotingClassifier"}} sklearn/naive_bayes -.-> lab-49329{{"Klasswahrscheinlichkeiten mit VotingClassifier"}} sklearn/ensemble -.-> lab-49329{{"Klasswahrscheinlichkeiten mit VotingClassifier"}} ml/sklearn -.-> lab-49329{{"Klasswahrscheinlichkeiten mit VotingClassifier"}} end

Initialisiere die Klassifizierer und den Datensatz

Wir werden zunächst drei Klassifizierer und einen Toy-Datensatz initialisieren. Wir werden LogisticRegression, GaussianNB und RandomForestClassifier als Klassifizierer verwenden und X und y als Toy-Datensatz.

import numpy as np
import matplotlib.pyplot as plt

from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import VotingClassifier

clf1 = LogisticRegression(max_iter=1000, random_state=123)
clf2 = RandomForestClassifier(n_estimators=100, random_state=123)
clf3 = GaussianNB()
X = np.array([[-1.0, -1.0], [-1.2, -1.4], [-3.4, -2.2], [1.1, 1.2]])
y = np.array([1, 1, 2, 2])

Initialisiere den VotingClassifier

Wir werden dann einen Soft-Voting-VotingClassifier mit den Gewichten [1, 1, 5] initialisieren, was bedeutet, dass die vorhergesagten Wahrscheinlichkeiten des RandomForestClassifier fünfmal so stark gewichtet werden wie die Wahrscheinlichkeiten der anderen Klassifizierer, wenn die durchschnittliche Wahrscheinlichkeit berechnet wird.

eclf = VotingClassifier(
    estimators=[("lr", clf1), ("rf", clf2), ("gnb", clf3)],
    voting="soft",
    weights=[1, 1, 5],
)

Vorhersage der Klasswahrscheinlichkeiten für alle Klassifizierer

Wir werden die Klasswahrscheinlichkeiten für alle Klassifizierer mithilfe der predict_proba()-Funktion vorhersagen.

probas = [c.fit(X, y).predict_proba(X) for c in (clf1, clf2, clf3, eclf)]

Holen Sie sich die Klasswahrscheinlichkeiten für die erste Probe in der Datenmenge

Wir werden die Klasswahrscheinlichkeiten für die erste Probe in der Datenmenge abrufen und sie in class1_1 und class2_1 speichern.

class1_1 = [pr[0, 0] for pr in probas]
class2_1 = [pr[0, 1] for pr in probas]

Zeichnen Sie die Klasswahrscheinlichkeiten

Wir werden die Klasswahrscheinlichkeiten für jeden Klassifizierer und den VotingClassifier mithilfe eines Balkendiagramms zeichnen.

N = 4  ## Anzahl der Gruppen
ind = np.arange(N)  ## Gruppenpositionen
width = 0.35  ## Balkenbreite

fig, ax = plt.subplots()

## Balken für Klassifizierer 1-3
p1 = ax.bar(ind, np.hstack(([class1_1[:-1], [0]])), width, color="green", edgecolor="k")
p2 = ax.bar(
    ind + width,
    np.hstack(([class2_1[:-1], [0]])),
    width,
    color="lightgreen",
    edgecolor="k",
)

## Balken für VotingClassifier
p3 = ax.bar(ind, [0, 0, 0, class1_1[-1]], width, color="blue", edgecolor="k")
p4 = ax.bar(
    ind + width, [0, 0, 0, class2_1[-1]], width, color="steelblue", edgecolor="k"
)

## Diagrammanmerkungen
plt.axvline(2.8, color="k", linestyle="dashed")
ax.set_xticks(ind + width)
ax.set_xticklabels(
    [
        "LogisticRegression\nGewicht 1",
        "GaussianNB\nGewicht 1",
        "RandomForestClassifier\nGewicht 5",
        "VotingClassifier\n(durchschnittliche Wahrscheinlichkeiten)",
    ],
    rotation=40,
    ha="right",
)
plt.ylim([0, 1])
plt.title("Klasswahrscheinlichkeiten für Probe 1 durch verschiedene Klassifizierer")
plt.legend([p1[0], p2[0]], ["Klasse 1", "Klasse 2"], loc="upper left")
plt.tight_layout()
plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man die von dem VotingClassifier in Scikit-Learn berechneten Klasswahrscheinlichkeiten darstellt. Wir haben drei verschiedene Klassifizierer verwendet, darunter LogisticRegression, GaussianNB und RandomForestClassifier, und haben ihre vorhergesagten Wahrscheinlichkeiten mithilfe des VotingClassifier gemittelt. Anschließend haben wir die Wahrscheinlichkeitsgewichtung visualisiert, indem wir jeden Klassifizierer auf dem Trainingssatz anpassen und die vorhergesagten Klasswahrscheinlichkeiten für die erste Probe in der Datenmenge darstellen.