Modellbau in Scikit-learn lernen

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: 

Modell1Datensatz 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:

Modell2Form 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.
Python
   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
Python
   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:

Modell3

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.
Python
   from   sklearn.linear_model   import   LogisticRegression   log_reg   =   LogisticRegression  (  max_iter  =  200  )   log_reg  .  fit  (  X_train     y_train  )   
Modell4Training 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.
Python
   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:

  1. 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.
  2. Einfache Modellbewertung : Mit Tools wie Kreuzvalidierung und Leistungsmetriken können wir messen, wie gut unser Modell funktioniert, und Verbesserungsmöglichkeiten identifizieren.
  3. 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.
  4. Reibungslose Integration : Basierend auf wichtigen Python-Bibliotheken wie NumPy und SciPy, sodass es in unseren bestehenden Datenanalyse-Workflow passt.
  5. Einfache und konsistente Schnittstelle : Die gleiche einfache Syntax funktioniert über verschiedene Modelle hinweg und erleichtert das Erlernen und Wechseln zwischen Algorithmen.
  6. 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.
Quiz erstellen