Ü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.
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
- Durchführen grundlegender Operationen an einem Spark-Datenrahmen
- Eine CSV-Datei lesen
- Schema definieren
- Untersuchen von Daten mit PySpark
- Überprüfen Sie die Abmessungen der Daten
- Beschreiben Sie die Daten
- Anzahl fehlender Werte
- Finden Sie die Anzahl der eindeutigen Werte in einer Spalte
- Kodieren Sie kategoriale Variablen mit PySpark
- String-Indizierung
- Eine heiße Codierung
- Vektor-Assembler
- Erstellen von Pipelines für maschinelles Lernen mit PySpark
- Transformatoren und Schätzer
- 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 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:
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
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
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..
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
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
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.
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
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
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
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.
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.
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
pyspark-Pipelines für maschinelles Lernen
pyspark-Pipelines für maschinelles Lernen
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.
Wir sehen uns im nächsten Artikel zu dieser PySpark-Serie für Anfänger. Viel Spaß beim Lernen!
Verwandt