Criação de pipelines de aprendizado de máquina com o Pyspark

Compartilhar no Facebook
Compartilhar no Twitter
Compartilhar no LinkedIn
Compartilhar no telegrama
Compartilhar no Whatsapp

Conteúdo

Visão geral

  • Esta é uma rápida introdução à criação de pipelines de ML com o PySpark
  • A capacidade de construir esses pipelines de aprendizado de máquina é uma habilidade obrigatória para qualquer aspirante a cientista de dados.
  • Este é um artigo prático com uma abordagem de código estruturado do PySpark, Portanto, prepare seu IDE python favorito!

Introdução

Reserve um momento para refletir sobre isso.: Quais são as habilidades que um aspirante a cientista de dados deve possuir para obter uma posição na indústria?

UMA aprendizado de máquina O projeto tem muitos componentes móveis que precisam ser reunidos antes de podermos executá-lo com sucesso. A capacidade de saber como construir um pipeline de aprendizado de máquina de ponta a ponta é um ativo valioso. Como cientista de dados (aspirante ou estabelecido), você deve saber como esses pipelines de aprendizado de máquina funcionam.

Isto é, em poucas palavras, a fusão de duas disciplinas: ciência de dados e engenharia de software. Esses dois andam de mãos dadas para um cientista de dados. Não se trata apenas de construir modelos, precisamos ter as habilidades de software para construir sistemas de nível empresarial.

3_feature-image-4817266

Então, neste artigo, vamos nos concentrar na ideia básica por trás da construção desses pipelines de aprendizado de máquina usando o PySpark. Este é um artigo prático, então inicie seu IDE de python favorito e vamos em frente!!

Observação: Esta é a parte 2 da minha série PySpark para iniciantes. Você pode verificar o artigo introdutório abaixo:

Tabela de conteúdo

  1. Realizar operações básicas em um quadro de dados Spark
    1. Leia um arquivo CSV
    2. Definindo o esquema
  2. Explorando dados usando o PySpark
    1. Verifique as dimensões dos dados
    2. Descreva os dados
    3. Contagem de valor ausente
    4. Encontre a contagem de valores únicos em uma coluna
  3. Codifique variáveis ​​categóricas usando PySpark
    1. Indexação de string
    2. Uma codificação quente
  4. Montador de vetores
  5. Criação de pipelines de aprendizado de máquina com o PySpark
    1. Transformadores e estimadores
    2. Exemplos de tubos

Realizar operações básicas em um quadro de dados Spark

Uma etapa essencial (e primeiro) em qualquer projeto de ciência de dados é entender os dados antes de construir qualquer Aprendizado de máquina modelo. A maioria dos aspirantes a ciência de dados tropeça aqui, eles simplesmente não gastam tempo suficiente para entender com o que estão trabalhando. Há uma tendência para apressar e construir modelos, uma falácia que tem que evitar.

Seguiremos esse princípio neste artigo.. Vou seguir uma abordagem estruturada em todos os momentos para garantir que não percamos nenhuma etapa crítica.

Primeiro, vamos tomar um momento e entender cada variável com a qual trabalharemos aqui. Vamos usar um conjunto de dados de um Partida de críquete da Índia x Bangladesh. Vamos ver as diferentes variáveis ​​que temos no conjunto de dados:

  • Massa: Identificação única do batedor (todo)
  • Batsman_Name: Nome do batedor (Fragmento)
  • Bowler: Identificação única do jogador (todo)
  • Bowler_Name: Nome do Bowler (Fragmento)
  • Comente: Descrição do evento como transmitido (corrente)
  • Detalhe: Outra cadeia que descreve eventos como janelas e entregas extras (Corrente)
  • Disparamos: Identificação única do batedor se descartado (Fragmento)
  • EU IRIA: ID de fila único (corrente)
  • Isball: Se a entrega foi legal ou não (boleano)
  • Isboundary: Se o batedor atingiu um limite ou não (trilhas)
  • Iswicket: Se o batedor disparou ou não (trilhas)
  • Sobre: Sobre o numero (Dobro)
  • Carreiras: É executado naquela parcela específica (todo)
  • Timestamp: Horário em que os dados foram registrados (carimbo de data / hora)

Então vamos começar, de acordo?

Leia um arquivo CSV

Quando ligamos o Spark, a SparkSession A variável está apropriadamente disponível com o nome ‘Fagulha – fagulha‘. Podemos usar isso para ler vários tipos de arquivos, como CSV, JSON, TEXTO, etc. Isso nos permite salvar os dados como um quadro de dados Spark.

Por padrão, trata o tipo de dados de todas as colunas como uma string. Você pode verificar os tipos de dados usando o printSchema função no quadro de dados:

schema_default-2297781

Definindo o esquema

Agora, não queremos que todas as colunas em nosso conjunto de dados sejam tratadas como strings. Então, O que podemos fazer sobre isso?

Podemos definir o esquema personalizado para nosso quadro de dados no Spark. Para isto, precisamos criar um objeto de StructType que tem uma lista de StructField. E claro, devemos definir StructField com um nome de coluna, o tipo de dados da coluna e se os valores nulos são permitidos para a coluna em particular ou não.

Consulte o seguinte snippet de código para entender como criar este esquema personalizado:

schema_defined-6873429

Remover colunas de dados

Em qualquer projeto de aprendizado de máquina, sempre temos algumas colunas que não são necessárias para resolver o problema. Tenho certeza que você já enfrentou esse dilema antes também, seja na indústria ou em um hackathon online.

No nosso caso, podemos usar a função drop para remover a coluna dos dados. Use o asterisco

column_names-7151119

pipeline de aprendizado de máquina pyspark

Explorando dados usando o PySpark

Verifique as dimensões dos dados

Ao contrário dos pandas, Os dataframes do Spark não têm a função de forma para verificar as dimensões dos dados. Em seu lugar, podemos usar o código abaixo para verificar as dimensões do conjunto de dados:

Descreva os dados Faíscas descrever A função nos dá a maioria dos resultados estatísticos como a média, contar, mínimo, desvio máximo e padrão. Você pode usar o resumo

describe_pyspark-4386114

pipeline de aprendizado de máquina pyspark

Contagem de valor ausente

É estranho quando obtemos um conjunto de dados sem valores ausentes. Você consegue se lembrar da última vez que aconteceu?

É importante verificar o número de valores ausentes presentes em todas as colunas. Saber a contagem nos ajuda a lidar com os valores ausentes antes de criar qualquer modelo de aprendizado de máquina com esses dados..

null_values_count-7052123

pipeline de aprendizado de máquina pyspark

Contagens de valor de uma coluna Ao contrário dos pandas, nós não temos o valor_contas () função em dataframes Spark. Você pode usar o agrupar por

value_counts_pyspark-7372651

pipeline de aprendizado de máquina pyspark

Codifique variáveis ​​categóricas usando PySpark

A maioria dos algoritmos de aprendizado de máquina aceita dados apenas na forma numérica. Portanto, é essencial converter qualquer variável categórica presente em nosso conjunto de dados em números.

Lembre-se de que não podemos simplesmente removê-los de nosso conjunto de dados, pois podem conter informações úteis. Seria um pesadelo perder isso só porque não queremos descobrir como usá-los!!

Vamos ver alguns dos métodos para codificar variáveis ​​categóricas usando o PySpark.

Indexação de string

string_index-2423420

pipeline de aprendizado de máquina pyspark

Codificação One-Hot

A codificação one-hot é um conceito que todo cientista de dados deve conhecer. Eu confiei nele várias vezes ao lidar com valores ausentes. É um salva-vidas! Aqui está o aviso: De faísca OneHotEncoder

não codifica diretamente a variável categórica. Primeiro, precisamos usar o String Indexer para converter a variável para a forma numérica e, em seguida, usar OneHotEncoderEstimator

para codificar várias colunas do conjunto de dados.

ohencoding-5066072

pipeline de aprendizado de máquina pyspark

Montador de vetores

Um montador de vetor combina uma determinada lista de colunas em uma única coluna de vetor.

Isso normalmente é usado no final das etapas de exploração de dados e pré-processamento. Nesta fase, geralmente trabalhamos com alguns recursos brutos ou transformados que podem ser usados ​​para treinar nosso modelo. O Vector Assembler os converte em uma única coluna de recursos para treinar o modelo de aprendizado de máquina

vector-9640755

pipeline de aprendizado de máquina pyspark

Criação de pipelines de aprendizado de máquina com o PySpark

Um projeto de aprendizado de máquina geralmente envolve etapas como pré-processamento de dados, extração de características, ajustando o modelo e avaliando os resultados. Precisamos realizar muitas transformações nos dados em sequência. Como você pode imaginar, acompanhá-los pode se tornar uma tarefa tediosa.

É aqui que entram os pipelines de aprendizado de máquina..

Um pipeline nos permite manter o fluxo de dados de todas as transformações relevantes que são necessárias para atingir o resultado final. Precisamos definir os estágios do pipeline que atuam como uma cadeia de comando para o Spark executar. Aqui,

cada estágio é um transformador ou estimador.

Transformadores e estimadores Como o nome sugere, Transformadores

converter um quadro de dados em outro atualizando os valores atuais de uma coluna específica (como converter colunas categóricas em numéricas) ou mapeá-lo para alguns outros valores usando lógica definida. Um estimador implementa o encaixar() método em um quadro de dados e produz um modelo. Por exemplo, Regressão logística é um estimador que treina um modelo de classificação quando chamamos o encaixar()

método.

Vamos entender isso com a ajuda de alguns exemplos.

Exemplos de tubos

sample_df_1-7162538

pipelines de aprendizado de máquina pyspark

  • Nós criamos o quadro de dados. Suponha que tenhamos que transformar os dados na seguinte ordem: estágio 1: Rótulo Codificar o String Index la coluna
  • Categoria 1 stage_2: Rótulo Codificar o String Index la coluna
  • categoria_2 stage_3: One-Hot Encode la columna indexada

basic_pipeline-7612362

pipelines de aprendizado de máquina pyspark Em cada estágio, vamos passar o nome da coluna de entrada e saída e configurar o pipeline passando pelos estágios definidos na lista de Pipeline

objeto.

sample_df_2-5820679

pipelines de aprendizado de máquina pyspark

Agora, Vamos dar um exemplo mais complexo de como configurar um pipeline. Aqui, vamos transformar os dados e construir um modelo de regressão logística.

sample_df_3-6763377

pipelines de aprendizado de máquina pyspark

  • Agora, suponha que esta seja a ordem de nossa canalização: estágio 1: Rótulo Codificar o String Index la coluna
  • feature_2 stage_2: Rótulo Codificar o String Index la coluna
  • feature_3 stage_3: One Hot Codifique a coluna indexada de feature_2 e
  • feature_3
  • stage_4: Crie um vetor de todas as características necessárias para treinar um modelo de regressão logística

pipeline_lr-1896706

pipelines de aprendizado de máquina pyspark

sample_df_4-3764859

pipelines de aprendizado de máquina pyspark

sample_df_5-1005393

pipelines de aprendizado de máquina pyspark

Perfeito!

Notas finais

Este foi um artigo curto, mas intuitivo sobre como criar pipelines de aprendizado de máquina usando o PySpark. Vou reiterar de novo porque é muito importante: você precisa saber como esses tubos funcionam. Essa é uma grande parte de sua função como cientista de dados..

Você já trabalhou em um projeto de aprendizado de máquina de ponta a ponta antes? Ou você fez parte de uma equipe que construiu esses tubos em um ambiente industrial? Vamos nos conectar na seção de comentários abaixo e discutir.

Relacionado

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.