Datenwissenschaft

Machine Learning Tutorial mit Scikit-learn

Machine Learning Tutorial mit Scikit-learn

In dieser Lektion über maschinelles Lernen mit scikit-learn lernen wir verschiedene Aspekte dieses hervorragenden Python-Pakets kennen, das es uns ermöglicht, einfache und komplexe maschinelle Lernfähigkeiten auf eine Vielzahl von Daten anzuwenden, zusammen mit Funktionen, um die von uns aufgestellte Hypothese zu testen.

Das scikit-learn-Paket enthält einfache und effiziente Tools zur Anwendung von Data Mining und Datenanalyse auf Datensätze und diese Algorithmen stehen für die Anwendung in verschiedenen Kontexten zur Verfügung. Es ist ein Open-Source-Paket, das unter einer BSD-Lizenz erhältlich ist, was bedeutet, dass wir diese Bibliothek sogar kommerziell nutzen können use. Es basiert auf Matplotlib, NumPy und SciPy und ist daher vielseitig einsetzbar. Wir werden Anaconda mit Jupyter Notebook verwenden, um Beispiele in dieser Lektion zu präsentieren.

Was scikit-learn bietet?

Die scikit-learn-Bibliothek konzentriert sich vollständig auf die Datenmodellierung. Bitte beachten Sie, dass scikit-learn keine wesentlichen Funktionalitäten zum Laden, Manipulieren und Zusammenfassen von Daten bietet. Hier sind einige der beliebtesten Modelle, die uns scikit-learn zur Verfügung stellt:

Installieren Sie Python scikit-learn

Nur eine Anmerkung vor dem Start des Installationsprozesses, wir verwenden für diese Lektion eine virtuelle Umgebung, die wir mit dem folgenden Befehl erstellt haben:

python -m virtualenv scikit
Quelle scikit/bin/aktivieren

Sobald die virtuelle Umgebung aktiv ist, können wir die Pandas-Bibliothek in der virtuellen Umgebung installieren, damit Beispiele, die wir als nächstes erstellen, ausgeführt werden können:

pip install scikit-learn

Oder wir können Conda verwenden, um dieses Paket mit dem folgenden Befehl zu installieren:

conda installieren scikit-learn

Wir sehen so etwas, wenn wir den obigen Befehl ausführen:

Sobald die Installation mit Conda abgeschlossen ist, können wir das Paket in unseren Python-Skripten wie folgt verwenden:

sklearn importieren

Beginnen wir damit, scikit-learn in unseren Skripten zu verwenden, um großartige Algorithmen für maschinelles Lernen zu entwickeln.

Importieren von Datensätzen

Das Tolle an scikit-learn ist, dass es mit Beispieldatensätzen vorinstalliert ist, mit denen Sie schnell loslegen können. Die Datensätze sind die Iris und Ziffern Datensätze für die Klassifikation und die Boston Hauspreise Datensatz für Regressionstechniken. In diesem Abschnitt sehen wir uns an, wie Sie das Iris-Dataset laden und verwenden.

Um einen Datensatz zu importieren, müssen wir zuerst das richtige Modul importieren, gefolgt von der Speicherung des Datensatzes:

aus sklearn-Importdatensätzen
Iris = Datensätze.load_iris()
Ziffern = Datensätze.load_digits()
Ziffern.Daten

Sobald wir das obige Code-Snippet ausführen, sehen wir die folgende Ausgabe:

Die gesamte Ausgabe wurde der Kürze halber entfernt. Dies ist der Datensatz, den wir in dieser Lektion hauptsächlich verwenden werden, aber die meisten Konzepte können im Allgemeinen auf alle Datensätze angewendet werden.

Nur eine lustige Tatsache zu wissen, dass es mehrere Module in der scikit Ökosystem, eines davon ist lernen verwendet für Machine-Learning-Algorithmen. Auf dieser Seite finden Sie viele andere vorhandene Module.

Den Datensatz erkunden

Nachdem wir nun den bereitgestellten Ziffern-Datensatz in unser Skript importiert haben, sollten wir beginnen, grundlegende Informationen über den Datensatz zu sammeln, und das werden wir hier tun. Hier sind die grundlegenden Dinge, die Sie erkunden sollten, wenn Sie Informationen zu einem Dataset suchen:

Lassen Sie uns ein kurzes Code-Snippet schreiben, um die oben genannten drei Informationen aus unserem Datensatz zu extrahieren:

print('Ziel:      ', Ziffern.Ziel)
print('Tasten:        ', Ziffern.Schlüssel())
print('Beschreibung: ', Ziffern.BESCHREIB.)

Sobald wir das obige Code-Snippet ausführen, sehen wir die folgende Ausgabe:

Bitte beachten Sie, dass die variablen Ziffern nicht einfach sind. Als wir den Ziffern-Datensatz ausdruckten, enthielt er tatsächlich numpy Arrays. Wir werden sehen, wie wir auf diese Arrays zugreifen können. Notieren Sie sich dazu die verfügbaren Schlüssel in der Zifferninstanz, die wir im letzten Code-Schnipsel gedruckt haben.

Wir beginnen damit, die Form der Array-Daten zu erhalten, d. h. die Zeilen und Spalten, die das Array hat. Dazu müssen wir zuerst die tatsächlichen Daten abrufen und dann ihre Form erhalten:

digits_set = Ziffern.Daten
print(digits_set.gestalten)

Sobald wir das obige Code-Snippet ausführen, sehen wir die folgende Ausgabe:

Das bedeutet, dass in unserem Datensatz 1797 Stichproben zusammen mit 64 Datenmerkmalen (oder Spalten) vorhanden sind. Außerdem haben wir auch einige Ziellabels, die wir hier mit Hilfe von matplotlib visualisieren werden. Hier ist ein Code-Schnipsel, der uns dabei hilft:

Matplotlib importieren.pyplot als plt
# Bilder und Ziellabels als Liste zusammenführen
images_and_labels = list(zip(Ziffern.Bilder, Ziffern.Ziel))
für index, (image, label) in enumerate(images_and_labels[:8]):
# initialisiere einen Subplot von 2X4 an der i+1-ten Position
plt.Nebenhandlung(2, 4, Index + 1)
# Es müssen keine Achsen geplottet werden
plt.Achse('aus')
# Bilder in allen Nebenhandlungen anzeigen
plt.imshow(image, cmap=plt.cm.grey_r,interpolation='nächstes')
# Füge jeder Nebenhandlung einen Titel hinzu
plt.title('Training: ' + str(label))
plt.Show()

Sobald wir das obige Code-Snippet ausführen, sehen wir die folgende Ausgabe:

Beachten Sie, wie wir die beiden NumPy-Arrays zusammengezippt haben, bevor wir sie ohne Achseninformationen auf ein 4 x 2 Raster gezeichnet haben. Jetzt sind wir uns sicher, welche Informationen wir über den Datensatz haben, mit dem wir arbeiten.

Jetzt, da wir wissen, dass wir 64 Daten-Features haben (was übrigens viele Features sind), ist es schwierig, die tatsächlichen Daten zu visualisieren. Dafür haben wir aber eine Lösung.

Hauptkomponentenanalyse (PCA)

Dies ist kein Tutorial über PCA, aber lassen Sie uns eine kleine Vorstellung davon geben, was es ist. Wie wir wissen, stehen uns zwei Techniken zur Verfügung, um die Anzahl der Features aus einem Dataset zu reduzieren:

  1. Eliminierung von Funktionen
  2. Merkmalsextraktion

Während die erste Technik das Problem verlorener Datenmerkmale hat, auch wenn sie wichtig gewesen sein könnten, leidet die zweite Technik nicht darunter, da wir mit Hilfe von PCA neue Datenmerkmale (in geringerer Anzahl) konstruieren, bei denen wir die Eingabevariablen so, dass wir die „unwichtigsten“ Variablen weglassen können und dennoch die wertvollsten Teile aller Variablen behalten können.

Wie vorausgesehen, PCA hilft uns, die Hochdimensionalität von Daten zu reduzieren was ein direktes Ergebnis der Beschreibung eines Objekts mit vielen Datenmerkmalen ist. Nicht nur Ziffern, sondern viele andere praktische Datensätze verfügen über eine Vielzahl von Funktionen, darunter Finanzinstitutsdaten, Wetter- und Wirtschaftsdaten für eine Region usw. Wenn wir PCA für den Zifferndatensatz durchführen, Unser Ziel wird es sein, nur 2 Merkmale zu finden, die die meisten Eigenschaften aufweisen des Datensatzes.

Lassen Sie uns ein einfaches Code-Snippet schreiben, um PCA auf das Ziffern-Dataset anzuwenden, um unser lineares Modell mit nur 2 Funktionen zu erhalten:

von sklearn.Zerlegungsimport PCA
feature_pca = PCA(n_komponenten=2)
reduziert_data_random = feature_pca.fit_transform(Ziffern.Daten)
model_pca = PCA(n_Komponenten=2)
reduziert_data_pca = model_pca.fit_transform(Ziffern.Daten)
reduziert_data_pca.gestalten
print(reduced_data_random)
print(reduced_data_pca)

Sobald wir das obige Code-Snippet ausführen, sehen wir die folgende Ausgabe:

[[ -1.2594655   21.27488324]
[  7.95762224 -20.76873116]
[  6.99192123  -9.95598191]

[ 10.8012644   -6.96019661]
[ -4.87210598  12.42397516]
[ -0.34441647   6.36562581]]
[[ -1.25946526  21.27487934]
[  7.95761543 -20.76870705]
[  6.99191947  -9.9559785 ]

[ 10.80128422  -6.96025542]
[ -4.87210144  12.42396098]
[ -0.3443928    6.36555416]]

Im obigen Code erwähnen wir, dass wir nur 2 Features für den Datensatz benötigen.

Nachdem wir nun gute Kenntnisse über unseren Datensatz haben, können wir entscheiden, welche Art von maschinellen Lernalgorithmen wir darauf anwenden können. Die Kenntnis eines Datensatzes ist wichtig, denn so können wir entscheiden, welche Informationen aus ihm gewonnen werden können und mit welchen Algorithmen. Es hilft uns auch, die von uns aufgestellte Hypothese zu testen, während wir zukünftige Werte vorhersagen.

Anwenden von k-Means-Clustering

Der k-Means-Clustering-Algorithmus ist einer der einfachsten Clustering-Algorithmen für unüberwachtes Lernen. Bei diesem Clustering haben wir eine zufällige Anzahl von Clustern und wir klassifizieren unsere Datenpunkte in einem dieser Cluster. Der k-means-Algorithmus findet den nächstgelegenen Cluster für jeden der gegebenen Datenpunkte und weist diesen Datenpunkt diesem Cluster zu.

Sobald das Clustering abgeschlossen ist, wird das Zentrum des Clusters neu berechnet, den Datenpunkten werden neue Cluster zugewiesen, wenn sich Änderungen ergeben. Dieser Vorgang wird wiederholt, bis die Datenpunkte ihre Cluster nicht mehr ändern, um Stabilität zu erreichen.

Wenden wir diesen Algorithmus einfach ohne Vorverarbeitung der Daten an. Für diese Strategie ist das Code-Snippet recht einfach:

aus dem sklearn-Importcluster
k = 3
k_means = Cluster.KMittel(k)
# Fitdaten
k_means.passen (Ziffern.Daten)
# Ergebnisse drucken
print(k_means.Etiketten_[::10])
drucken (Ziffern.Ziel[::10])

Sobald wir das obige Code-Snippet ausführen, sehen wir die folgende Ausgabe:

In der obigen Ausgabe können wir sehen, dass jedem der Datenpunkte unterschiedliche Cluster bereitgestellt werden.

Fazit

In dieser Lektion haben wir uns eine hervorragende Bibliothek für maschinelles Lernen angesehen, scikit-learn. Wir haben gelernt, dass es viele andere Module in der scikit-Familie gibt, und wir haben einen einfachen k-Means-Algorithmus auf den bereitgestellten Datensatz angewendet. Es gibt viele weitere Algorithmen, die neben dem k-Means-Clustering, das wir in dieser Lektion angewendet haben, auf den Datensatz angewendet werden können. Wir empfehlen Ihnen, dies zu tun und Ihre Ergebnisse zu teilen.

Bitte teilen Sie Ihr Feedback zur Lektion auf Twitter mit @sbmaggarwal und @LinuxHint.

Top 5 ergonomische Computermaus-Produkte für Linux
Verursacht längere Computernutzung Schmerzen im Handgelenk oder in den Fingern?? Leiden Sie unter steifen Gelenken und müssen ständig die Hände schütt...
So ändern Sie die Maus- und Touchpad-Einstellungen mit Xinput in Linux
Die meisten Linux-Distributionen werden standardmäßig mit der Bibliothek „libinput“ ausgeliefert, um Eingabeereignisse auf einem System zu verarbeiten...
Weisen Sie Ihre Maustasten mit der X-Mouse Button Control für verschiedene Software unterschiedlich zu
Vielleicht benötigen Sie ein Tool, mit dem sich die Steuerung Ihrer Maus bei jeder von Ihnen verwendeten Anwendung ändern kann. In diesem Fall können ...