Einführung
In diesem Lab lernen wir, wie wir einen Mehrfachklassifizierungsdatensatz mit der Funktion make_multilabel_classification der Scikit-Learn-Bibliothek generieren. Die Funktion erzeugt zufällige Stichproben von Mehrfachklassifizierungsdaten, wobei jede Stichprobe die Häufigkeiten zweier Merkmale hat, die in jeder der beiden Klassen unterschiedlich verteilt sind.
Tipps für die virtuelle Maschine
Nachdem der Start der virtuellen Maschine abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
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.
Importieren der erforderlichen Bibliotheken und Definition von Konstanten
Zunächst müssen wir die erforderlichen Bibliotheken importieren und die Farben und die Konstante für den Zufallszahlengenerator definieren, um den Mehrfachklassifizierungsdatensatz zu generieren.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_multilabel_classification as make_ml_clf
COLORS = np.array(
[
"!",
"#FF3333", ## rot
"#0198E1", ## blau
"#BF5FFF", ## lila
"#FCD116", ## gelb
"#FF7216", ## orange
"#4DBD33", ## grün
"#87421F", ## braun
]
)
## Verwenden Sie denselben Zufallszahlengenerator bei mehreren Aufrufen von
## make_multilabel_classification, um sicherzustellen, dass die Verteilungen gleich sind
RANDOM_SEED = np.random.randint(2**10)
Definieren der Plot-Funktion
Als nächstes definieren wir eine Funktion plot_2d, die den zufällig generierten Mehrfachklassifizierungsdatensatz darstellt. Sie nimmt drei Argumente n_labels, n_classes und length entgegen.
def plot_2d(ax, n_labels=1, n_classes=3, length=50):
X, Y, p_c, p_w_c = make_ml_clf(
n_samples=150,
n_features=2,
n_classes=n_classes,
n_labels=n_labels,
length=length,
allow_unlabeled=False,
return_distributions=True,
random_state=RANDOM_SEED,
)
ax.scatter(
X[:, 0], X[:, 1], color=COLORS.take((Y * [1, 2, 4]).sum(axis=1)), marker="."
)
ax.scatter(
p_w_c[0] * length,
p_w_c[1] * length,
marker="*",
linewidth=0.5,
edgecolor="black",
s=20 + 1500 * p_c**2,
color=COLORS.take([1, 2, 4]),
)
ax.set_xlabel("Feature 0 count")
return p_c, p_w_c
Diese Funktion generiert den Datensatz mit der Funktion make_multilabel_classification mit den angegebenen Parametern. Anschließend visualisiert sie den Datensatz mit der scatter-Funktion der Matplotlib-Bibliothek. Die Funktion gibt die Klassenwahrscheinlichkeiten und die Merkmalswahrscheinlichkeiten zurück.
Zeichnen des Datensatzes
Jetzt zeichnen wir den zufällig generierten Mehrfachklassifizierungsdatensatz mit der Funktion plot_2d. Wir erstellen eine Figur mit zwei Teilplots und rufen für jeden Teilplot die Funktion plot_2d mit unterschiedlichen Parametern auf.
_, (ax1, ax2) = plt.subplots(1, 2, sharex="row", sharey="row", figsize=(8, 4))
plt.subplots_adjust(bottom=0.15)
p_c, p_w_c = plot_2d(ax1, n_labels=1)
ax1.set_title("n_labels=1, length=50")
ax1.set_ylabel("Feature 1 count")
plot_2d(ax2, n_labels=3)
ax2.set_title("n_labels=3, length=50")
ax2.set_xlim(left=0, auto=True)
ax2.set_ylim(bottom=0, auto=True)
plt.show()
Drucken der Klass- und Merkmalswahrscheinlichkeiten
Schließlich drucken wir die Klass- und Merkmalswahrscheinlichkeiten für jede Klasse mit den von der Funktion plot_2d zurückgegebenen Klass- und Merkmalswahrscheinlichkeiten.
print("The data was generated from (random_state=%d):" % RANDOM_SEED)
print("Class", "P(C)", "P(w0|C)", "P(w1|C)", sep="\t")
for k, p, p_w in zip(["red", "blue", "yellow"], p_c, p_w_c.T):
print("%s\t%0.2f\t%0.2f\t%0.2f" % (k, p, p_w[0], p_w[1]))
Zusammenfassung
In diesem Lab haben wir gelernt, wie man einen Mehrfachklassifizierungsdatensatz mit der Funktion make_multilabel_classification der Scikit-Learn-Bibliothek generiert. Wir haben auch gelernt, wie man den Datensatz zeichnet und die Klass- und Merkmalswahrscheinlichkeiten druckt.