Gewichteter Datensatz - Darstellung der Entscheidungsfunktion

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 Tutorial lernen wir, wie wir eine Entscheidungsfunktion eines gewichteten Datensatzes mit scikit-learn darstellen. Wir lernen auch, wie wir unterschiedlichen Gewichten den Proben im Datensatz zuweisen, um zu zeigen, wie die Gewichte die Entscheidungsfunktion beeinflussen.

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 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 in 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 ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49292{{"Gewichteter Datensatz - Darstellung der Entscheidungsfunktion"}} end

Importieren der erforderlichen Bibliotheken

Wir beginnen mit dem Importieren der erforderlichen Bibliotheken für unser Projekt.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model

Erstellen eines gewichteten Datensatzes

Wir erstellen einen gewichteten Datensatz mit der numpy-Bibliothek. Wir generieren 20 Punkte mit zufälligen Werten und weisen den letzten 10 Proben einen größeren Gewicht zu.

np.random.seed(0)
X = np.r_[np.random.randn(10, 2) + [1, 1], np.random.randn(10, 2)]
y = [1] * 10 + [-1] * 10
sample_weight = 100 * np.abs(np.random.randn(20))
sample_weight[:10] *= 10

Zeichnen des gewichteten Datensatzes

Wir zeichnen den gewichteten Datensatz mit der matplotlib-Bibliothek. Die Größe der Punkte ist proportional zu ihrem Gewicht.

xx, yy = np.meshgrid(np.linspace(-4, 5, 500), np.linspace(-4, 5, 500))
fig, ax = plt.subplots()
ax.scatter(
    X[:, 0],
    X[:, 1],
    c=y,
    s=sample_weight,
    alpha=0.9,
    cmap=plt.cm.bone,
    edgecolor="black",
)

Anpassen des ungewichteten Modells

Wir trainieren ein ungewichtetes Modell mit dem SGDClassifier-Algorithmus aus der scikit-learn-Bibliothek. Anschließend zeichnen wir die Entscheidungsfunktion des ungewichteten Modells.

clf = linear_model.SGDClassifier(alpha=0.01, max_iter=100)
clf.fit(X, y)
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
no_weights = ax.contour(xx, yy, Z, levels=[0], linestyles=["solid"])

Anpassen des gewichteten Modells

Wir trainieren ein gewichtetes Modell mit dem gleichen Algorithmus wie in Schritt 4, aber diesmal übergeben wir das sample_weight-Argument an die fit-Methode. Anschließend zeichnen wir die Entscheidungsfunktion des gewichteten Modells.

clf = linear_model.SGDClassifier(alpha=0.01, max_iter=100)
clf.fit(X, y, sample_weight=sample_weight)
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
samples_weights = ax.contour(xx, yy, Z, levels=[0], linestyles=["dashed"])

Hinzufügen einer Legende und Anzeigen des Graphen

Wir fügen einer Legende zum Graphen hinzu, um zwischen dem ungewichteten und dem gewichteten Modell zu unterscheiden. Anschließend zeigen wir den Graphen an.

no_weights_handles, _ = no_weights.legend_elements()
weights_handles, _ = samples_weights.legend_elements()
ax.legend(
    [no_weights_handles[0], weights_handles[0]],
    ["ohne Gewichte", "mit Gewichten"],
    loc="untere linke Ecke",
)

ax.set(xticks=(), yticks=())
plt.show()

Zusammenfassung

In diesem Tutorial haben wir gelernt, wie man mit scikit-learn die Entscheidungsfunktion eines gewichteten Datensatzes zeichnet. Wir haben auch gelernt, wie man den Proben im Datensatz unterschiedliche Gewichte zuweist, um zu zeigen, wie die Gewichte die Entscheidungsfunktion beeinflussen.