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.
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
- Realizar operações básicas em um quadro de dados Spark
- Leia um arquivo CSV
- Definindo o esquema
- Explorando dados usando o PySpark
- Verifique as dimensões dos dados
- Descreva os dados
- Contagem de valor ausente
- Encontre a contagem de valores únicos em uma coluna
- Codifique variáveis categóricas usando PySpark
- Indexação de string
- Uma codificação quente
- Montador de vetores
- Criação de pipelines de aprendizado de máquina com o PySpark
- Transformadores e estimadores
- 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:
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:
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
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
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..
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
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
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.
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
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
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
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.
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.
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
pipelines de aprendizado de máquina pyspark
pipelines de aprendizado de máquina pyspark
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.
Vejo você no próximo artigo sobre esta série PySpark para iniciantes. Boa aprendizagem!
Relacionado