Scikit-learn: Daten laden und erkunden

scikit-learnBeginner
Jetzt üben

Einführung

Willkommen in der Welt des maschinellen Lernens mit scikit-learn! Einer der ersten und wichtigsten Schritte in jedem Projekt des maschinellen Lernens ist das Laden und Verstehen Ihrer Daten. Scikit-learn, eine leistungsstarke und benutzerfreundliche Bibliothek für maschinelles Lernen in Python, bietet mehrere integrierte Datensätze, die Ihnen den Einstieg erleichtern.

In diesem Lab arbeiten Sie mit dem berühmten Iris-Blumendatensatz. Sie lernen, wie Sie diesen Datensatz laden, seine Struktur untersuchen, auf die Merkmalsdaten und Zielvariablen zugreifen und schließlich eine einfache Visualisierung erstellen, um einen ersten Überblick über die Verteilung der Daten zu erhalten. Dieses grundlegende Wissen ist für jeden angehenden Data Scientist oder Machine Learning Engineer unerlässlich.

Iris-Datensatz mit datasets.load_iris() laden

In diesem Schritt lernen Sie, wie Sie einen der integrierten Datensätze von scikit-learn laden. Wir verwenden die Funktion load_iris() aus dem Modul sklearn.datasets. Diese Funktion gibt ein "Bunch"-Objekt zurück, das einer Python-Dictionary ähnelt und den Datensatz zusammen mit seinen Metadaten enthält.

Öffnen Sie zunächst die Datei main.py im Dateiexplorer auf der linken Seite Ihres Bildschirms. Wir werden unseren gesamten Code in dieser Datei schreiben.

Fügen Sie nun den folgenden Code zu main.py hinzu, um das notwendige Modul zu importieren und den Datensatz zu laden.

from sklearn import datasets

## Load the Iris dataset
iris = datasets.load_iris()

Dieser Code importiert das Modul datasets und ruft die Funktion load_iris() auf, wobei das resultierende Datensatzobjekt in einer Variablen namens iris gespeichert wird.

Um Ihr Skript auszuführen, öffnen Sie ein Terminal in der WebIDE (Sie können das Menü "Terminal" -> "New Terminal" verwenden) und führen Sie den folgenden Befehl aus. Ihr aktuelles Verzeichnis ist bereits ~/project.

python3 main.py

Sie werden keine Ausgabe sehen, und das ist zu erwarten. Wir haben die Daten in die Variable iris geladen, aber wir haben unser Skript noch nicht aufgefordert, etwas auszugeben. In den nächsten Schritten werden wir den Inhalt dieses iris-Objekts untersuchen.

Datenarray mit iris.data abrufen

In diesem Schritt greifen Sie auf den Kern des Datensatzes zu: die Merkmalsdaten. Das von uns erstellte iris-Objekt enthält ein Attribut namens data, das ein NumPy-Array der Messungen für jede Blume enthält. Jede Zeile repräsentiert eine Stichprobe (eine Blume) und jede Spalte repräsentiert ein Merkmal (eine Messung).

Lassen Sie uns die Datei main.py ändern, um dieses Datenarray auszugeben und zu sehen, wie es aussieht.

Aktualisieren Sie Ihre main.py-Datei mit dem folgenden Code:

from sklearn import datasets

## Load the Iris dataset
iris = datasets.load_iris()

## Print the data array
print(iris.data)

Führen Sie nun das Skript erneut in Ihrem Terminal aus:

python3 main.py

Sie sollten ein großes Array von Zahlen im Terminal sehen. Dies sind die Merkmalsdaten für alle 150 Blumenstichproben im Datensatz. Jede Stichprobe hat 4 Merkmale.

[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 ...
 [6.5 3.  5.2 2. ]
 [6.2 3.4 5.4 2.3]
 [5.9 3.  5.1 1.8]]

Zielarray mit iris.target abrufen

In diesem Schritt greifen Sie auf die Labels für jede Stichprobe im Datensatz zu. Im überwachten maschinellen Lernen werden diese Labels als "Ziel" (target) bezeichnet. Das iris-Objekt speichert diese im Attribut target. Für den Iris-Datensatz repräsentieren die Ziele die Arten jeder Blume.

Die Arten sind als ganze Zahlen kodiert: 0 für Setosa, 1 für Versicolor und 2 für Virginica. Das Attribut iris.target ist ein NumPy-Array, das die entsprechende ganze Zahl für jede Stichprobe in iris.data enthält.

Lassen Sie uns main.py ändern, um das Zielarray auszugeben.

from sklearn import datasets

## Load the Iris dataset
iris = datasets.load_iris()

## Print the target array
print(iris.target)

Führen Sie das Skript in Ihrem Terminal aus:

python3 main.py

Die Ausgabe wird ein Array von Nullen, Einsen und Zweien sein, das die Arten für jede der 150 Blumen repräsentiert.

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]

Feature-Namen mit iris.feature_names erkunden

In diesem Schritt erfahren Sie, wie Sie herausfinden, was die Spalten im iris.data-Array tatsächlich darstellen. Obwohl wir wissen, dass es vier Merkmale gibt, sind ihre Namen aus dem Datenarray selbst nicht sofort ersichtlich. Das iris-Objekt speichert diese Namen praktisch im Attribut feature_names.

Dies ist sehr nützlich für das Verständnis und die Interpretation Ihrer Daten. Lassen Sie uns main.py ändern, um diese Feature-Namen auszugeben.

Aktualisieren Sie Ihre main.py-Datei:

from sklearn import datasets

## Load the Iris dataset
iris = datasets.load_iris()

## Print the feature names
print(iris.feature_names)

Führen Sie nun das Skript in Ihrem Terminal aus:

python3 main.py

Die Ausgabe ist eine Liste von Zeichenketten, die Ihnen den Namen für jede der vier Spalten in iris.data geben.

['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

Jetzt wissen Sie, dass die vier Merkmale der Kelchblattlänge (sepal length), der Kelchblattbreite (sepal width), der Kronblattlänge (petal length) und der Kronblattbreite (petal width) entsprechen, alle in Zentimetern.

Daten visualisieren mit matplotlib.pyplot.scatter(iris.data[:, 0], iris.data[:, 1])

In diesem letzten Schritt führen Sie eine einfache Datenvisualisierung durch, um die Beziehung zwischen zwei der Merkmale zu sehen. Visualisierung ist ein wichtiger Teil der Datenexploration. Wir werden die matplotlib-Bibliothek, ein beliebtes Plotting-Tool in Python, verwenden, um ein Streudiagramm (scatter plot) zu erstellen.

Wir werden das erste Merkmal (Kelchblattlänge) gegen das zweite Merkmal (Kelchblattbreite) auftragen. Um diese Spalten aus unseren Daten auszuwählen, verwenden wir NumPy-Slicing:

  • iris.data[:, 0] wählt alle Zeilen (:) und die erste Spalte (0) aus.
  • iris.data[:, 1] wählt alle Zeilen (:) und die zweite Spalte (1) aus.

Anstatt den Plot auf dem Bildschirm anzuzeigen, was für diese Umgebung nicht ideal ist, speichern wir ihn in einer Bilddatei namens iris_plot.png.

Aktualisieren Sie Ihre main.py-Datei mit dem folgenden Code:

from sklearn import datasets
import matplotlib.pyplot as plt

## Load the Iris dataset
iris = datasets.load_iris()

## We will plot the first two features: Sepal Length vs Sepal Width
X = iris.data[:, :2]
y = iris.target

plt.scatter(X[:, 0], X[:, 1])
plt.xlabel('Sepal Length (cm)')
plt.ylabel('Sepal Width (cm)')
plt.title('Sepal Length vs Sepal Width')

## Save the plot to a file
plt.savefig('iris_plot.png')

print("Plot saved to iris_plot.png")

Führen Sie das Skript in Ihrem Terminal aus:

python3 main.py

Sie sehen eine Bestätigungsnachricht.

Plot saved to iris_plot.png
Iris dataset scatter plot

Dieser Befehl zeigt keinen Plot direkt an, erstellt aber eine neue Datei namens iris_plot.png in Ihrem ~/project-Verzeichnis. Sie können diese Datei im Dateiexplorer auf der linken Seite doppelklicken, um Ihr Streudiagramm anzuzeigen.

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss dieses Labs! Sie haben erfolgreich Ihre ersten Schritte im Umgang mit Daten mit scikit-learn unternommen.

In diesem Lab haben Sie gelernt, wie Sie:

  • Einen integrierten Datensatz mit sklearn.datasets.load_iris() laden.
  • Auf die Feature-Matrix über das .data-Attribut zugreifen.
  • Auf die Ziel-Labels über das .target-Attribut zugreifen.
  • Die Bedeutung der Features durch Inspektion des .feature_names-Attributs verstehen.
  • Eine grundlegende Datenvisualisierung durchführen, indem Sie ein Streudiagramm mit matplotlib erstellen und es in einer Datei speichern.

Diese grundlegenden Fähigkeiten sind die Bausteine für fortgeschrittenere Machine-Learning-Aufgaben. Sie sind nun bereit, andere Datensätze zu erkunden und mit dem Aufbau Ihrer eigenen Machine-Learning-Modelle zu beginnen.