Costruire pipeline di machine learning con Pyspark

Contenuti

Panoramica

  • Ecco una rapida introduzione alla creazione di pipeline ML con PySpark
  • La capacità di creare queste pipeline di apprendimento automatico è un'abilità indispensabile per qualsiasi aspirante scienziato dei dati.
  • Questo è un articolo pratico con un approccio al codice strutturato di PySpark, Quindi prepara il tuo IDE Python preferito!

introduzione

Prenditi un momento per riflettere su questo.: Quali sono le competenze che un aspirante data scientist deve possedere per ottenere una posizione nel settore??

UN apprendimento automatico Il progetto ha molti componenti mobili che devono riunirsi prima di poterlo eseguire con successo. La capacità di sapere come costruire una pipeline di machine learning end-to-end è una risorsa preziosa. Come scienziato dei dati (aspirante o stabilito), dovresti sapere come funzionano queste pipeline di machine learning.

Questo è, in poche parole, la fusione di due discipline: scienza dei dati e ingegneria del software. Questi due vanno di pari passo per uno scienziato dei dati. Non si tratta solo di costruire modelli, dobbiamo avere le competenze software per costruire sistemi di livello aziendale.

3_feature-image-4817266

Quindi, in questo articolo, ci concentreremo sull'idea di base alla base della creazione di queste pipeline di apprendimento automatico utilizzando PySpark. Questo è un articolo pratico, quindi avvia il tuo IDE Python preferito e iniziamo!!

Nota: Questa è la parte 2 dalla mia serie PySpark per principianti. Puoi dare un'occhiata all'articolo introduttivo qui sotto:

Sommario

  1. Eseguire operazioni di base su un frame di dati Spark
    1. Leggi un file CSV
    2. Definire lo schema
  2. Esplorare i dati usando PySpark
    1. Controlla le dimensioni dei dati
    2. Descrivi i dati
    3. Conteggio valori mancanti
    4. Trova il conteggio dei valori univoci in una colonna
  3. Codifica le variabili categoriali usando PySpark
    1. Indicizzazione delle stringhe
    2. Una codifica a caldo
  4. assemblatore di vettore
  5. Costruire pipeline di machine learning con PySpark
    1. Trasformatori e stimatori
    2. Esempi di tubi

Eseguire operazioni di base su un frame di dati Spark

Un passaggio essenziale (e prima) in qualsiasi progetto di data science è comprendere i dati prima di costruirne uno Apprendimento automatico modello. La maggior parte degli aspiranti alla scienza dei dati inciampa qui, semplicemente non passano abbastanza tempo a capire con cosa stanno lavorando. C'è una tendenza a correre e costruire modelli, un errore che deve evitare.

Seguiremo questo principio in questo articolo.. Seguirò sempre un approccio strutturato per assicurarci di non perdere alcun passaggio critico.

Primo, prendiamoci un momento e comprendiamo ogni variabile con cui lavoreremo qui. Useremo un set di dati di a Partita di cricket India vs Bangladesh. Vediamo le diverse variabili che abbiamo nel set di dati:

  • Pastella: Identificazione univoca della pastella (totale)
  • Battitore_Nome: Il nome del battitore (Corda)
  • Giocatore di bowling: Identificazione univoca del bowler (totale)
  • Nome_giocatore: Nome del giocatore di bocce (Corda)
  • Commento: Descrizione dell'evento come trasmesso (catena)
  • Dettaglio: Un'altra catena che descrive gli eventi come finestre e consegne extra (Catena)
  • Licenziato: Identificazione univoca della pastella se scartata (Corda)
  • ID: ID coda univoco (catena)
  • isball: Se la consegna era legale o meno (booleano)
  • isconfine: Se il battitore ha raggiunto un limite o meno (binario)
  • Iswicket: Se il battitore ha sparato o no (binario)
  • Su: Circa il numero (Doppio)
  • carriere: Funziona su quella particolare puntata (totale)
  • Timestamp: Ora in cui i dati sono stati registrati (marca temporale)

Quindi iniziamo, essere d'accordo?

Leggi un file CSV

Quando accendiamo Spark, il SparkSession La variabile è opportunamente disponibile sotto il nome ‘Scintilla – scintilla'. Possiamo usarlo per leggere vari tipi di file, come CSV, JSON, TESTO, eccetera. Questo ci permette di salvare i dati come un frame di dati Spark.

Per impostazione predefinita, tratta il tipo di dati di tutte le colonne come una stringa. Puoi controllare i tipi di dati usando il printSchema funzione in frame di dati:

schema_default-2297781

Definire lo schema

Ora, non vogliamo che tutte le colonne nel nostro set di dati vengano trattate come stringhe. Quindi, Cosa possiamo fare al riguardo?

Possiamo definire lo schema personalizzato per il nostro frame di dati in Spark. Per questo, dobbiamo creare un oggetto di Tipo di struttura che ha un elenco di StructField. Ed ovviamente, dovremmo definire StructField con un nome di colonna, il tipo di dati della colonna e se i valori null sono consentiti o meno per la particolare colonna.

Fare riferimento al seguente frammento di codice per capire come creare questo schema personalizzato:

schema_defined-6873429

Rimuovi colonne dai dati

In qualsiasi progetto di machine learning, abbiamo sempre delle colonne che non servono per risolvere il problema. Sono sicuro che anche tu hai già affrontato questo dilemma, sia nell'industria o in a hackathon online.

Nel nostro caso, possiamo usare la funzione drop per rimuovere la colonna dai dati. Utilizzare il asterisco

nomi_colonne-7151119

pipeline di apprendimento automatico pyspark

Esplorare i dati usando PySpark

Controlla le dimensioni dei dati

A differenza dei panda, I frame di dati Spark non hanno la funzione di forma per controllare le dimensioni dei dati. Anziché, possiamo usare il codice qui sotto per controllare le dimensioni del set di dati:

Descrivi i dati scintille descrivere La funzione ci fornisce la maggior parte dei risultati statistici come media, contare, minimo, massimo e deviazione standard. Puoi usare il astratto

description_pyspark-4386114

pipeline di apprendimento automatico pyspark

Conteggio valori mancanti

È strano quando otteniamo un set di dati senza valori mancanti. Riesci a ricordare l'ultima volta che è successo??

È importante controllare il numero di valori mancanti presenti in tutte le colonne. Conoscere il conteggio ci aiuta a gestire i valori mancanti prima di creare qualsiasi modello di machine learning con quei dati..

null_values_count-7052123

pipeline di apprendimento automatico pyspark

Conteggi del valore di una colonna A differenza dei panda, non abbiamo il value_counts () funzione nei frame di dati Spark. Puoi usare il raggruppare per

value_counts_pyspark-7372651

pipeline di apprendimento automatico pyspark

Codifica le variabili categoriali usando PySpark

La maggior parte degli algoritmi di apprendimento automatico accetta dati solo in forma numerica. Perciò, è essenziale convertire in numeri qualsiasi variabile categoriale presente nel nostro set di dati.

Ricorda che non possiamo semplicemente rimuoverli dal nostro set di dati, in quanto possono contenere informazioni utili. Sarebbe un incubo perderlo solo perché non vogliamo capire come usarli!!

Vediamo alcuni dei metodi per codificare le variabili categoriali usando PySpark.

Indicizzazione delle stringhe

string_index-2423420

pipeline di apprendimento automatico pyspark

Codifica One-Hot

La codifica one-hot è un concetto che ogni data scientist dovrebbe conoscere. Mi sono fidato di lui diverse volte quando si trattava di valori mancanti. È un salvavita! Ecco l'avvertimento: Spark's OneHotEncoder

non codifica direttamente la variabile categoriale. Primo, dobbiamo usare String Indexer per convertire la variabile in forma numerica e quindi usare OneHotEncoderEstimator

per codificare più colonne del set di dati.

ohencodifica-5066072

pipeline di apprendimento automatico pyspark

assemblatore di vettore

Un assemblatore di vettori combina un determinato elenco di colonne in un'unica colonna vettoriale.

Questo viene in genere utilizzato alla fine delle fasi di esplorazione e pre-elaborazione dei dati. In questa fase, di solito lavoriamo con alcune funzionalità grezze o trasformate che possono essere utilizzate per addestrare il nostro modello. Vector Assembler li converte in una singola colonna di funzionalità per addestrare il modello di apprendimento automatico

vettore-9640755

pipeline di apprendimento automatico pyspark

Costruire pipeline di machine learning con PySpark

Un progetto di machine learning di solito prevede passaggi come la pre-elaborazione dei dati, estrazione delle caratteristiche, adattare il modello e valutare i risultati. Dobbiamo eseguire molte trasformazioni sui dati in sequenza. Come puoi immaginare, tenerne traccia può diventare un compito noioso.

È qui che entrano in gioco le pipeline di machine learning..

Una pipeline ci permette di mantenere il flusso di dati di tutte le trasformazioni rilevanti che sono necessarie per raggiungere il risultato finale. Dobbiamo definire le fasi della pipeline che fungono da catena di comando per l'esecuzione di Spark. Qui,

ogni stadio è un trasformatore o stimatore.

Trasformatori e stimatori Come suggerisce il nome, trasformatori

convertire un frame di dati in un altro aggiornando i valori correnti di una particolare colonna (come convertire le colonne categoriali in numeriche) o mappandolo su altri valori usando una logica definita. Uno stimatore implementa il adattarsi() metodo in un frame di dati e produce un modello. Ad esempio, Regressione logistica è uno stimatore che addestra un modello di classificazione quando chiamiamo il adattarsi()

metodo.

Capiamolo con l'aiuto di alcuni esempi.

Esempi di tubi

sample_df_1-7162538

pipeline di apprendimento automatico pyspark

  • Abbiamo creato il data frame. Supponiamo di dover trasformare i dati nel seguente ordine: fase 1: Etichetta Codifica o Stringa Indice la colonna
  • Categoria 1 Fase 2: Etichetta Codifica o Stringa Indice la colonna
  • categoria_2 stage_3: One-Hot Encode la columna indexada

basic_pipeline-7612362

pipeline di apprendimento automatico pyspark In ogni fase, passeremo il nome della colonna di input e output e configureremo la pipeline passando le fasi definite nell'elenco di Tubatura

oggetto.

sample_df_2-5820679

pipeline di apprendimento automatico pyspark

Ora, Facciamo un esempio più complesso di come configurare una pipeline. Qui, trasformeremo i dati e costruiremo un modello di regressione logistica.

sample_df_3-6763377

pipeline di apprendimento automatico pyspark

  • Ora, supponiamo che questo sia l'ordine della nostra canalizzazione: fase 1: Etichetta Codifica o Stringa Indice la colonna
  • feature_2 Fase 2: Etichetta Codifica o Stringa Indice la colonna
  • feature_3 stage_3: One Hot Encode la colonna indicizzata di feature_2 e
  • feature_3
  • stage_4: Creare un vettore di tutte le caratteristiche necessarie per addestrare un modello di regressione logistica

pipeline_lr-1896706

pipeline di apprendimento automatico pyspark

sample_df_4-3764859

pipeline di apprendimento automatico pyspark

sample_df_5-1005393

pipeline di apprendimento automatico pyspark

Perfetto!

Note finali

Questo era un articolo breve ma intuitivo su come costruire pipeline di machine learning usando PySpark. Lo ribadirò di nuovo perché è così importante: devi sapere come funzionano questi tubi. Questa è una parte importante del tuo ruolo di scienziato dei dati..

Hai mai lavorato a un progetto di machine learning end-to-end?? Oppure hai fatto parte di un team che ha costruito questi tubi in un ambiente industriale?? Connettiamoci nella sezione commenti qui sotto e discutiamo.

Imparentato

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.