Klassifizierung mit den nächsten Nachbarn

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 verwenden wir den Nearest Neighbors Classification-Algorithmus, um Datenpunkte in einem zweidimensionalen Raum zu klassifizieren. Wir verwenden den Iris-Datensatz, ein häufig verwendeter Datensatz in der Maschinellen Lernen. Wir visualisieren die Entscheidungsgrenzen für jede Klasse und beobachten, wie der Algorithmus mit unterschiedlichen Gewichten arbeitet.

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 fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie sofort beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/inspection("Inspection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/inspection -.-> lab-49078{{"Klassifizierung mit den nächsten Nachbarn"}} ml/sklearn -.-> lab-49078{{"Klassifizierung mit den nächsten Nachbarn"}} end

Importieren der erforderlichen Bibliotheken

Wir beginnen mit dem Importieren der erforderlichen Bibliotheken, die matplotlib, seaborn, ListedColormap, datasets, neighbors und DecisionBoundaryDisplay aus sklearn umfassen.

import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.colors import ListedColormap
from sklearn import neighbors, datasets
from sklearn.inspection import DecisionBoundaryDisplay

Laden des Iris-Datensatzes

Wir laden dann den Iris-Datensatz mit der Funktion load_iris() aus dem Modul datasets von sklearn.

iris = datasets.load_iris()

Vorbereiten der Daten

Wir nehmen nur die ersten beiden Merkmale des Iris-Datensatzes, nämlich die Kelchblätchenlänge und die Kelchblätchenbreite. Anschließend teilen wir die Daten in die Merkmalsmatrix X und den Zielvektor y auf.

X = iris.data[:, :2]
y = iris.target

Definieren der Farbskalen

Wir definieren die Farbskalen, die zur Darstellung der Entscheidungsgrenzen und der Trainingspunkte verwendet werden.

cmap_light = ListedColormap(["orange", "cyan", "cornflowerblue"])
cmap_bold = ["darkorange", "c", "darkblue"]

Visualisieren der Entscheidungsgrenzen

Wir werden in einer Schleife durch zwei verschiedene Gewichts-Werte, "uniform" und "distance", iterieren und die Entscheidungsgrenzen für jeden Gewichts-Wert darstellen. Wir werden die Klasse KNeighborsClassifier aus dem Modul neighbors verwenden, um die Klassifizierung durchzuführen.

n_neighbors = 15

for weights in ["uniform", "distance"]:
    ## create an instance of Neighbours Classifier and fit the data
    clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)
    clf.fit(X, y)

    ## plot the decision boundaries
    _, ax = plt.subplots()
    DecisionBoundaryDisplay.from_estimator(
        clf,
        X,
        cmap=cmap_light,
        ax=ax,
        response_method="predict",
        plot_method="pcolormesh",
        xlabel=iris.feature_names[0],
        ylabel=iris.feature_names[1],
        shading="auto",
    )

    ## plot the training points
    sns.scatterplot(
        x=X[:, 0],
        y=X[:, 1],
        hue=iris.target_names[y],
        palette=cmap_bold,
        alpha=1.0,
        edgecolor="black",
    )
    plt.title(
        "3-Class classification (k = %i, weights = '%s')" % (n_neighbors, weights)
    )

plt.show()

Interpretieren der Ergebnisse

Wir können die Entscheidungsgrenzen für jeden Gewichts-Wert beobachten und wie gut der Algorithmus bei der Klassifizierung der Datenpunkte performt. Der Gewichts-Wert "uniform" nimmt an, dass alle Nachbarn gleiches Gewicht haben, während der Gewichts-Wert "distance" mehr Gewicht auf nähere Nachbarn verlegt. Wir können sehen, dass die Entscheidungsgrenzen mit dem Gewichts-Wert "distance" glatter sind, was auf eine genauere Klassifizierung hinweist.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man den Algorithmus zur Klassifizierung mit den nächsten Nachbarn verwendet, um Datenpunkte in einem zweidimensionalen Raum zu klassifizieren. Wir haben den Iris-Datensatz verwendet, um die Entscheidungsgrenzen für jede Klasse zu visualisieren und beobachtet, wie der Algorithmus performt, wenn verschiedene Gewichts-Werte verwendet werden. Wir haben auch gelernt, wie man die Ergebnisse interpretiert und beobachtet, dass der Gewichts-Wert "distance" bei der Klassifizierung der Datenpunkte besser performt.