Erstellen von Pipelines für maschinelles Lernen mit Pyspark

Teilen auf Facebook
Teilen auf twittern
Teilen auf verlinktin
Teilen auf Telegramm
Teilen auf WhatsApp

Inhalt

Überblick

  • Hier ist eine kurze Einführung in das Erstellen von ML-Pipelines mit PySpark
  • Die Fähigkeit, diese Pipelines für maschinelles Lernen zu erstellen, ist ein Muss für jeden angehenden Datenwissenschaftler.
  • Dies ist ein praktischer Artikel mit einem strukturierten Code-Ansatz von PySpark, Bereiten Sie also Ihre bevorzugte Python-IDE vor!

Einführung

Nehmen Sie sich einen Moment Zeit, um darüber nachzudenken.: Welche Fähigkeiten muss ein angehender Data Scientist mitbringen, um eine Position in der Branche zu bekommen??

EIN maschinelles Lernen Das Projekt hat viele bewegliche Komponenten, die zusammenkommen müssen, bevor wir es erfolgreich ausführen können. Die Fähigkeit zu wissen, wie man eine End-to-End-Pipeline für maschinelles Lernen erstellt, ist ein wertvolles Gut. Als Datenwissenschaftler (anstrebend oder etabliert), Sie sollten wissen, wie diese Pipelines für maschinelles Lernen funktionieren.

Das ist, in einer Nussschale, die Verschmelzung zweier Disziplinen: Data Science und Software Engineering. Diese beiden gehen für einen Data Scientist Hand in Hand. Es geht nicht nur darum, Modelle zu bauen, Wir brauchen die Software-Kenntnisse, um Systeme der Enterprise-Klasse zu erstellen.

3_feature-image-4817266

Dann, In diesem Artikel, Wir konzentrieren uns auf die Grundidee hinter dem Aufbau dieser Pipelines für maschinelles Lernen mit PySpark. Dies ist ein praktischer Artikel, Starten Sie also Ihre Lieblings-Python-IDE und legen Sie los!!

Notiz: Das ist das Teil 2 aus meiner PySpark-Serie für Anfänger. Sie können den Einführungsartikel unten lesen:

Inhaltsverzeichnis

  1. Durchführen grundlegender Operationen an einem Spark-Datenrahmen
    1. Eine CSV-Datei lesen
    2. Schema definieren
  2. Untersuchen von Daten mit PySpark
    1. Überprüfen Sie die Abmessungen der Daten
    2. Beschreiben Sie die Daten
    3. Anzahl fehlender Werte
    4. Finden Sie die Anzahl der eindeutigen Werte in einer Spalte
  3. Kodieren Sie kategoriale Variablen mit PySpark
    1. String-Indizierung
    2. Eine heiße Codierung
  4. Vektor-Assembler
  5. Erstellen von Pipelines für maschinelles Lernen mit PySpark
    1. Transformatoren und Schätzer
    2. Beispiele für Rohre

Durchführen grundlegender Operationen an einem Spark-Datenrahmen

Ein wesentlicher Schritt (und zuerst) in jedem Data-Science-Projekt ist es, die Daten zu verstehen, bevor sie erstellt werden Maschinelles Lernen Modell. Die meisten Möchtegern-Datenwissenschafter stolpern hier, sie verbringen einfach nicht genug Zeit damit zu verstehen, womit sie arbeiten. Es gibt eine Tendenz zur Eile und zum Modellbau, ein Trugschluss, der sollte vermeiden.

Diesem Prinzip werden wir in diesem Artikel folgen.. Ich werde jederzeit strukturiert vorgehen, um sicherzustellen, dass wir keine kritischen Schritte verpassen.

Zuerst, Nehmen wir uns einen Moment Zeit und verstehen Sie jede Variable, mit der wir hier arbeiten werden. Wir verwenden einen Datensatz von a Cricket-Match Indien gegen Bangladesch. Sehen wir uns die verschiedenen Variablen an, die wir im Datensatz haben:

  • Teig: Eindeutige Identifizierung des Teigs (ganz)
  • Schlagmann_Name: Name des Batters (Zeichenfolge)
  • Bowler: Eindeutige Identifizierung des Bowlers (ganz)
  • Bowler_Name: Name des Bowlers (Zeichenfolge)
  • Kommentar: Beschreibung der Veranstaltung als Übertragung (Kette)
  • Detail: Eine weitere Kette, die Ereignisse als Fenster und zusätzliche Lieferungen beschreibt (Kette)
  • Gefeuert: Eindeutige Batterieidentifikation bei Verwerfen (Zeichenfolge)
  • ICH WÜRDE: eindeutige Warteschlangen-ID (Kette)
  • Isball: Ob die Lieferung legal war oder nicht (boolesch)
  • Isboundary: Ob der Teig ein Limit erreicht hat oder nicht (Spuren)
  • Iswicket: Ob der Teig abgefeuert wurde oder nicht (Spuren)
  • Auf: Über die Zahl (Doppelt)
  • Karriere: Es läuft auf dieser bestimmten Rate (ganz)
  • Zeitstempel: Zeitpunkt der Datenaufzeichnung (Zeitstempel)

Also lasst uns anfangen, zustimmen?

Eine CSV-Datei lesen

Wenn wir Spark einschalten, das SparkSession Die Variable ist entsprechend unter dem Namen verfügbar ‘Funke – Funke‘. Damit können wir verschiedene Dateitypen lesen, als CSV, JSON, TEXT, etc. Dadurch können wir die Daten als Spark-Datenrahmen speichern.

Standardmäßig, behandelt den Datentyp aller Spalten als String. Sie können die Datentypen mit dem printSchema Funktion in der Datenrahmen:

schema_default-2297781

Schema definieren

Jetzt, Wir möchten nicht, dass alle Spalten in unserem Dataset als Zeichenfolgen behandelt werden. Dann, Was können wir dagegen tun?

Wir können das benutzerdefinierte Schema für unseren Datenrahmen in Spark definieren. Dafür, wir müssen ein Objekt von . erstellen Strukturtyp die eine Liste von hat StructField. Und natürlich, wir sollten definieren StructField mit einem Spaltennamen, der Datentyp der Spalte und ob Nullwerte für die jeweilige Spalte erlaubt sind oder nicht.

Im folgenden Code-Snippet erfahren Sie, wie Sie dieses benutzerdefinierte Schema erstellen:

schema_defined-6873429

Spalten aus Daten entfernen

In jedem Machine-Learning-Projekt, Wir haben immer einige Spalten, die zur Lösung des Problems nicht benötigt werden. Ich bin sicher, Sie haben dieses Dilemma auch schon einmal erlebt, entweder in der industrie oder in a Online-Hackathon.

In unserem Fall, Wir können die Drop-Funktion verwenden, um die Spalte aus den Daten zu entfernen. Verwenden Sie die Sternchen

Spaltenname-7151119

pyspark-Pipeline für maschinelles Lernen

Untersuchen von Daten mit PySpark

Überprüfen Sie die Abmessungen der Daten

Im Gegensatz zu Pandas, Spark-Datenrahmen verfügen nicht über die Formfunktion, um die Dimensionen der Daten zu überprüfen. Stattdessen, Wir können den folgenden Code verwenden, um die Abmessungen des Datensatzes zu überprüfen:

Beschreiben Sie die Daten Funken beschreiben Die Funktion liefert uns die meisten statistischen Ergebnisse als Mittelwert, zählen, Minimum, Maximum und Standardabweichung. Du kannst den ... benutzen abstrakt

describe_pyspark-4386114

pyspark-Pipeline für maschinelles Lernen

Anzahl fehlender Werte

Es ist seltsam, wenn wir einen Datensatz ohne fehlende Werte erhalten. Kannst du dich erinnern, wann es das letzte Mal passiert ist?

Es ist wichtig, die Anzahl der fehlenden Werte in allen Spalten zu überprüfen. Die Kenntnis der Anzahl hilft uns, mit fehlenden Werten umzugehen, bevor wir mit diesen Daten ein Modell für maschinelles Lernen erstellen..

null_values_count-7052123

pyspark-Pipeline für maschinelles Lernen

Wertzählungen einer Spalte Im Gegensatz zu Pandas, wir haben die nicht value_counts () Funktion in Spark-Datenrahmen. Du kannst den ... benutzen gruppiere nach

value_counts_pyspark-7372651

pyspark-Pipeline für maschinelles Lernen

Kodieren Sie kategoriale Variablen mit PySpark

Die meisten maschinellen Lernalgorithmen akzeptieren Daten nur in numerischer Form. Deswegen, Es ist wichtig, jede in unserem Datensatz vorhandene kategoriale Variable in Zahlen umzuwandeln.

Denken Sie daran, dass wir sie nicht einfach aus unserem Datensatz entfernen können, da sie nützliche Informationen enthalten können. Es wäre ein Albtraum, das zu verlieren, nur weil wir nicht herausfinden wollen, wie man sie benutzt!!

Sehen wir uns einige der Methoden zum Codieren kategorialer Variablen mit PySpark an.

String-Indizierung

string_index-2423420

pyspark-Pipeline für maschinelles Lernen

One-Hot-Codierung

One-Hot-Coding ist ein Konzept, das jeder Datenwissenschaftler kennen sollte. Ich habe ihm im Umgang mit fehlenden Werten mehrmals vertraut. Es ist ein Lebensretter! Hier ist die Warnung: Funken OneHotEncoder

codiert die kategoriale Variable nicht direkt. Zuerst, Wir müssen String Indexer verwenden, um die Variable in eine numerische Form zu konvertieren und dann verwenden OneHotEncoderEstimator

um mehrere Spalten des Datensatzes zu codieren.

ohencoding-5066072

pyspark-Pipeline für maschinelles Lernen

Vektor-Assembler

Ein Vektorassembler kombiniert eine gegebene Liste von Spalten zu einer einzelnen Vektorspalte.

Dies wird normalerweise am Ende der Datenexplorations- und Vorverarbeitungsschritte verwendet. In dieser Phase, Wir arbeiten normalerweise mit einigen rohen oder transformierten Features, die zum Trainieren unseres Modells verwendet werden können. Vector Assembler wandelt sie in eine einzelne Spalte von Funktionen um, um das Modell für maschinelles Lernen zu trainieren

Vektor-9640755

pyspark-Pipeline für maschinelles Lernen

Erstellen von Pipelines für maschinelles Lernen mit PySpark

Ein Machine-Learning-Projekt umfasst normalerweise Schritte wie die Datenvorverarbeitung, Merkmalsextraktion, Modell anpassen und Ergebnisse auswerten. Wir müssen viele Transformationen der Daten nacheinander durchführen. Wie du dir vorstellen kannst, den Überblick zu behalten kann zu einer mühsamen Aufgabe werden.

Hier kommen Machine-Learning-Pipelines ins Spiel..

Eine Pipeline ermöglicht es uns, den Datenfluss aller relevanten Transformationen aufrechtzuerhalten, die erforderlich sind, um das Endergebnis zu erzielen. Wir müssen die Phasen der Pipeline definieren, die als Befehlskette für die Ausführung von Spark fungieren. Hier,

jede Stufe ist ein Transformator oder ein Schätzer.

Transformatoren und Schätzer Wie der Name schon sagt, Transformer

Konvertieren Sie einen Datenrahmen in einen anderen, indem Sie die aktuellen Werte einer bestimmten Spalte aktualisieren (wie man kategoriale Spalten in numerische umwandelt) oder mit definierter Logik auf andere Werte zuordnen. Ein Schätzer implementiert die hineinpassen() Methode in einem Datenrahmen und erzeugt ein Modell. Zum Beispiel, Logistische Regression ist ein Schätzer, der ein Klassifikationsmodell trainiert, wenn wir die hineinpassen()

Methode.

Lassen Sie uns dies anhand einiger Beispiele verstehen.

Beispiele für Rohre

sample_df_1-7162538

pyspark-Pipelines für maschinelles Lernen

  • Wir haben den Datenrahmen erstellt. Angenommen, wir müssen die Daten in der folgenden Reihenfolge transformieren: Stufe 1: Label Encode o String Index la columna
  • Kategorie 1 Stufe 2: Label Encode o String Index la columna
  • Kategorie_2 Bühne_3: One-Hot-Encode la columna indexada

basic_pipeline-7612362

pyspark-Pipelines für maschinelles Lernen In jeder Phase, Wir übergeben den Namen der Eingabe- und Ausgabespalte und konfigurieren die Pipeline, die die in der Liste der definierten Stufen passiert Pipeline

Objekt.

sample_df_2-5820679

pyspark-Pipelines für maschinelles Lernen

Jetzt, Nehmen wir ein komplexeres Beispiel für die Konfiguration einer Pipeline. Hier, Wir werden die Daten transformieren und ein logistisches Regressionsmodell erstellen.

sample_df_3-6763377

pyspark-Pipelines für maschinelles Lernen

  • Jetzt, Angenommen, dies ist die Reihenfolge unseres Channelings: Stufe 1: Label Encode o String Index la columna
  • Funktion_2 Stufe 2: Label Encode o String Index la columna
  • Funktion_3 Bühne_3: One Hot Encodieren Sie die indizierte Spalte von Funktion_2 Ja
  • Funktion_3
  • Bühne_4: Erstellen Sie einen Vektor aller Merkmale, die zum Trainieren eines logistischen Regressionsmodells erforderlich sind

pipe_lr-1896706

pyspark-Pipelines für maschinelles Lernen

sample_df_4-3764859

pyspark-Pipelines für maschinelles Lernen

sample_df_5-1005393

pyspark-Pipelines für maschinelles Lernen

Perfekt!

Abschließende Anmerkungen

Dies war ein kurzer, aber intuitiver Artikel zum Erstellen von Machine Learning-Pipelines mit PySpark. Ich werde es noch einmal wiederholen, weil es so wichtig ist: Sie müssen wissen, wie diese Rohre funktionieren. Dies ist ein großer Teil Ihrer Rolle als Data Scientist..

Haben Sie schon einmal an einem End-to-End-Projekt für maschinelles Lernen gearbeitet?? Oder waren Sie Teil eines Teams, das diese Rohre in einer industriellen Umgebung gebaut hat? Lassen Sie uns im Kommentarbereich unten eine Verbindung herstellen und diskutieren.

Verwandt

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.