Modellbau in Scikit-learn lernen
Scikit-learn ist eine Open-Source-Python-Bibliothek, die den Prozess der Erstellung von Modellen für maschinelles Lernen vereinfacht. Es bietet eine übersichtliche und konsistente Benutzeroberfläche, die sowohl Anfängern als auch erfahrenen Benutzern hilft, effizient zu arbeiten.
- Unterstützt Aufgaben wie Klassifizierung, Regression, Clustering und Vorverarbeitung
- Macht den Modellbau schnell und zuverlässig
- Bietet gebrauchsfertige Tools für Schulung und Evaluierung
- Reduziert die Komplexität durch Vermeidung der manuellen Implementierung von Algorithmen
Scikit-learn installieren und verwenden
Bevor wir mit dem Bau von Modellen beginnen, müssen wir sie installieren Scikit-lernen. Es erfordert Python 3.8 oder neuer und hängt von zwei wichtigen Bibliotheken ab: NumPy Und SciPy. Stellen Sie sicher, dass diese zuerst installiert werden.
Um Scikit-learn zu installieren, führen Sie den folgenden Befehl aus:
pip install -U scikit-learn
Dadurch wird die neueste Version von Scikit-learn zusammen mit ihren Abhängigkeiten heruntergeladen und installiert. Sehen wir uns die verschiedenen Schritte an, die beim Erstellen eines Modells mithilfe der Scikit-Learn-Bibliothek erforderlich sind.
Schritt 1: Laden eines Datensatzes
Ein Datensatz besteht aus:
- Merkmale (X): Eingabevariablen, die die Daten beschreiben
- Ziel (y): Der Wert, den wir vorhersagen möchten
Scikit-learn bietet integrierte Datensätze wie Iris Digits und Boston Housing. Verwendung des Iris-Datensatzes:
- load_iris() lädt die Daten
- X speichert Funktionsdaten
- y speichert Zielbezeichnungen
- feature_names und target_names geben beschreibende Namen
Wir können die ersten Zeilen untersuchen, um die Struktur zu verstehen. Für benutzerdefinierte Datensätze wird Pandas häufig zum Laden externer Dateien wie CSVs verwendet.
Python from sklearn.datasets import load_iris iris = load_iris () X = iris . data y = iris . target feature_names = iris . feature_names target_names = iris . target_names print ( 'Feature names:' feature_names ) print ( 'Target names:' target_names ) print ( ' n Type of X is:' type ( X )) print ( ' n First 5 rows of X: n ' X [: 5 ])
Ausgabe:
Datensatz wird geladen Manchmal müssen wir an unseren eigenen benutzerdefinierten Daten arbeiten und dann einen externen Datensatz laden. Hierfür können wir die verwenden Pandas-Bibliothek zum einfachen Laden und Bearbeiten von Datensätzen.
Hierzu können Sie sich auf unseren Artikel beziehen So importieren Sie eine CSV-Datei in Pandas ?
Schritt 2: Aufteilen des Datensatzes
Um ein Modell fair zu bewerten, teilen wir die Daten auf in:
- Trainingssatz: Wird zum Trainieren des Modells verwendet
- Testsatz: Wird verwendet, um zu bewerten, wie gut das Modell verallgemeinert
Mit train_test_split teilen wir den Iris-Datensatz auf, sodass 60 % für das Training und 40 % für Tests bestimmt sind (test_size=0,4). random_state=1 gewährleistet die Reproduzierbarkeit.
Nach der Aufteilung erhalten wir:
- X_train y_train -> Trainingsdaten
- X_test y_test -> Testdaten
Durch die Überprüfung der Formen wird sichergestellt, dass die Daten korrekt aufgeteilt werden.
Python from sklearn.model_selection import train_test_split X_train X_test y_train y_test = train_test_split ( X y test_size = 0.4 random_state = 1 )
Lassen Sie uns nun das überprüfen Formen der aufgeteilten Daten, um sicherzustellen, dass beide Sätze die richtigen Datenanteile aufweisen, um mögliche Fehler bei der Modellbewertung oder dem Training zu vermeiden.
Python print ( 'X_train Shape:' X_train . shape ) print ( 'X_test Shape:' X_test . shape ) print ( 'Y_train Shape:' y_train . shape ) print ( 'Y_test Shape:' y_test . shape )
Ausgabe:
Form geteilter Daten Schritt 3: Umgang mit kategorialen Daten
Algorithmen für maschinelles Lernen arbeiten mit numerischen Eingaben, daher müssen kategorische (Text-)Daten in Zahlen umgewandelt werden. Wenn Modelle nicht richtig codiert sind, können sie Kategorien falsch interpretieren. Scikit-learn bietet mehrere Kodierungsmethoden:
1. Etikettenkodierung : Es wandelt jede Kategorie in eine eindeutige Ganzzahl um. Beispielsweise würden in einer Spalte mit Kategorien wie „Katze“, „Hund“ und „Vogel“ diese in 0, 1 bzw. 2 umgewandelt. Diese Methode funktioniert gut, wenn die Kategorien eine sinnvolle Reihenfolge haben, z. B. „Niedrig, Mittel“ und „Hoch“.
- LabelEncoder(): Es wird initialisiert, um ein Encoderobjekt zu erstellen, das kategoriale Werte in numerische Beschriftungen umwandelt.
- fit_transform(): Diese Methode passt den Encoder zunächst an die kategorialen Daten an und wandelt die Kategorien dann in entsprechende numerische Beschriftungen um.
from sklearn.preprocessing import LabelEncoder categorical_feature = [ 'cat' 'dog' 'dog' 'cat' 'bird' ] encoder = LabelEncoder () encoded_feature = encoder . fit_transform ( categorical_feature ) print ( 'Encoded feature:' encoded_feature )
Ausgabe:
Kodierte Funktion: [1 2 2 1 0]
2. One-Hot-Codierung : One-Hot Encoding erstellt separate Binärspalten für jede Kategorie. Dies ist nützlich, wenn Kategorien keine natürliche Reihenfolge haben. Beispiel: Katze, Hund, Vogel -> 3 neue Spalten (Katze/Hund/Vogel) mit Einsen und Nullen.
- Die Eingabe muss in ein 2D-Array umgeformt werden
- OneHotEncoder(sparse_output=False) generiert binäre Spalten
from sklearn.preprocessing import OneHotEncoder import numpy as np categorical_feature = [ 'cat' 'dog' 'dog' 'cat' 'bird' ] categorical_feature = np . array ( categorical_feature ) . reshape ( - 1 1 ) encoder = OneHotEncoder ( sparse_output = False ) encoded_feature = encoder . fit_transform ( categorical_feature ) print ( 'OneHotEncoded feature: n ' encoded_feature )
Ausgabe:
Neben Label Encoding und One-Hot Encoding gibt es noch andere Techniken wie Mittlere Kodierung .
Schritt 4: Trainieren des Modells
Da unsere Daten nun bereit sind, ist es an der Zeit, ein Modell für maschinelles Lernen zu trainieren. Scikit-learn verfügt über viele Algorithmen mit einer konsistenten Schnittstelle zur Trainingsvorhersage und -bewertung. Hier verwenden wir Logistische Regression als Beispiel.
Notiz : Wir werden nicht näher auf die Funktionsweise des Algorithmus eingehen, da wir nur daran interessiert sind, seine Implementierung zu verstehen.
- log_reg = LogisticRegression(max_iter=200): Erstellen eines logistischen Regressionsklassifikatorobjekts.
- log_reg.fit(X_train y_train): Benutze dies Das logistische Regressionsmodell passt die Parameter des Modells so an, dass sie am besten zu den Daten passen.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression ( max_iter = 200 ) log_reg . fit ( X_train y_train )
Training mit logistischer Regression. Schritt 5: Machen Sie Vorhersagen
Nach dem Training verwenden wir das Modell, um Vorhersagen zu den Testdaten X_test zu treffen, indem wir die Vorhersagemethode aufrufen. Dies gibt die vorhergesagten Labels y_pred zurück.
- log_reg.predict: Es verwendet ein trainiertes logistisches Regressionsmodell, um Beschriftungen für die Testdaten X_test vorherzusagen.
y_pred = log_reg . predict ( X_test )
Schritt 6: Bewertung der Modellgenauigkeit
Überprüfen Sie, wie gut unser Modell funktioniert, indem Sie y_test und y_pred vergleichen. Hier verwenden wir die Methode precision_score des Metrikmoduls.
Python from sklearn import metrics print ( 'Logistic Regression model accuracy:' metrics . accuracy_score ( y_test y_pred ))
Ausgabe:
Genauigkeit des logistischen Regressionsmodells: 0,9666666666666667
Jetzt möchten wir, dass unser Modell Vorhersagen zu neuen Beispieldaten trifft. Dann kann die Beispieleingabe einfach auf die gleiche Weise übergeben werden, wie wir jede beliebige Merkmalsmatrix übergeben. Hier haben wir es als Beispiel verwendet = [[3 5 4 2] [2 3 5 4]]
Python sample = [[ 3 5 4 2 ] [ 2 3 5 4 ]] preds = log_reg . predict ( sample ) pred_species = [ iris . target_names [ p ] for p in preds ] print ( 'Predictions:' pred_species )
Ausgabe:
Vorhersagen: [np.str_('virginica') np.str_('virginica')]
Funktionen von Scikit-learn
Scikit-learn wird verwendet, weil es die Erstellung von Modellen für maschinelles Lernen einfach und effizient macht. Hier sind einige wichtige Gründe:
- Gebrauchsfertige Werkzeuge : Es bietet integrierte Funktionen für häufige Aufgaben wie die Datenvorverarbeitung, Trainingsmodelle und das Treffen von Vorhersagen. Dies spart Zeit, da die Notwendigkeit entfällt, Algorithmen von Grund auf zu programmieren.
- Einfache Modellbewertung : Mit Tools wie Kreuzvalidierung und Leistungsmetriken können wir messen, wie gut unser Modell funktioniert, und Verbesserungsmöglichkeiten identifizieren.
- Umfangreiche Algorithmusunterstützung : Es bietet viele beliebte Algorithmen für maschinelles Lernen, einschließlich Klassifizierungsregression und Clustering, was uns die Flexibilität gibt, das richtige Modell für unser Problem auszuwählen.
- Reibungslose Integration : Basierend auf wichtigen Python-Bibliotheken wie NumPy und SciPy, sodass es in unseren bestehenden Datenanalyse-Workflow passt.
- Einfache und konsistente Schnittstelle : Die gleiche einfache Syntax funktioniert über verschiedene Modelle hinweg und erleichtert das Erlernen und Wechseln zwischen Algorithmen.
- Modelltuning leicht gemacht : Tools wie die Rastersuche helfen uns, die Einstellungen unseres Modells zu optimieren, um die Genauigkeit ohne zusätzlichen Aufwand zu verbessern.
Vorteile der Verwendung von Scikit-learn
- Benutzerfreundlich : Die konsistente und einfache Benutzeroberfläche von Scikit-learn macht es für Anfänger zugänglich und am besten für Experten geeignet.
- Zeitsparend: Vorgefertigte Tools und Algorithmen verkürzen die Entwicklungszeit, sodass wir uns mehr auf die Lösung von Problemen als auf die Codierungsdetails konzentrieren können.
- Bessere Modellleistung : Einfach zu verwendende Tuning- und Evaluierungstools tragen zur Verbesserung der Modellgenauigkeit und -zuverlässigkeit bei.
- Flexibel und skalierbar : Unterstützt eine breite Palette von Algorithmen und lässt sich reibungslos in andere Python-Bibliotheken integrieren, wodurch es für Projekte jeder Größe geeignet ist.
- Starke Community-Unterstützung : Eine große aktive Community sorgt für regelmäßige Aktualisierungen, umfangreiche Dokumentation und zahlreiche Ressourcen, die uns helfen, wenn wir nicht weiterkommen.