Construire des pipelines de machine learning avec Pyspark

Contenu

Vue d'ensemble

  • Voici une introduction rapide à la création de pipelines de ML avec PySpark
  • La capacité à créer ces pipelines d'apprentissage automatique est une compétence indispensable pour tout chercheur de données en herbe.
  • Ceci est un article pratique avec une approche de code structuré de PySpark, Alors préparez votre IDE python préféré!

introduction

Prenez un moment pour y réfléchir.: Quelles sont les compétences qu'un aspirant data scientist doit posséder pour obtenir un poste dans l'industrie?

UNE apprentissage automatique Le projet comporte de nombreux composants mobiles qui doivent être réunis avant de pouvoir l'exécuter avec succès. La capacité de savoir comment construire un pipeline de machine learning de bout en bout est un atout précieux. En tant que data scientist (aspirant ou établi), vous devez savoir comment fonctionnent ces pipelines d'apprentissage automatique.

C'est, en peu de mots, la fusion de deux disciplines: science des données et génie logiciel. Ces deux éléments vont de pair pour un data scientist. Il ne s'agit pas seulement de construire des modèles, nous devons avoir les compétences logicielles pour créer des systèmes de niveau entreprise.

3_feature-image-4817266

Ensuite, dans cet article, nous nous concentrerons sur l'idée de base derrière la construction de ces pipelines d'apprentissage automatique à l'aide de PySpark. Ceci est un article pratique, alors démarrez votre IDE python préféré et c'est parti !!

Noter: C'est la partie 2 de ma série PySpark pour les débutants. Vous pouvez consulter l'article d'introduction ci-dessous:

Table des matières

  1. Effectuer des opérations de base sur une trame de données Spark
    1. Lire un fichier CSV
    2. Définir le schéma
  2. Explorer les données à l'aide de PySpark
    1. Vérifier les dimensions des données
    2. Décrire les données
    3. Nombre de valeurs manquantes
    4. Trouver le nombre de valeurs uniques dans une colonne
  3. Encoder des variables catégorielles à l'aide de PySpark
    1. Indexation des chaînes
    2. Un codage à chaud
  4. Assembleur de vecteurs
  5. Construire des pipelines de machine learning avec PySpark
    1. Transformateurs et estimateurs
    2. Exemples de tuyaux

Effectuer des opérations de base sur une trame de données Spark

Une étape indispensable (et d'abord) dans tout projet de science des données est de comprendre les données avant de construire tout Apprentissage automatique maquette. La plupart des aspirants à la science des données trébuchent ici, ils ne passent tout simplement pas assez de temps à comprendre avec quoi ils travaillent. Il y a une tendance à se précipiter et à construire des modèles, une erreur qui devrait éviter.

Nous suivrons ce principe dans cet article.. Je suivrai une approche structurée à tout moment pour m'assurer que nous ne manquons aucune étape critique.

Premier, prenons un moment pour comprendre chaque variable avec laquelle nous travaillerons ici. Nous allons utiliser un ensemble de données d'un Match de cricket Inde contre Bangladesh. Voyons les différentes variables que nous avons dans l'ensemble de données:

  • Battre: Identification unique de la pâte (entier)
  • Batsman_Name: Nom du batteur (Chaîne de caractères)
  • quilleur: Identification unique du quilleur (entier)
  • Bowler_Name: Nom du lanceur (Chaîne de caractères)
  • Commenter: Description de l'événement tel que diffusé (chaîne)
  • Détail: Une autre chaîne qui décrit les événements comme des fenêtres et des livraisons supplémentaires (Chaîne)
  • Mis à la porte: Identification unique de la pâte si elle est jetée (Chaîne de caractères)
  • identifiant: identifiant de file d'attente unique (chaîne)
  • Isball: Si la livraison était légale ou non (booléen)
  • Isfrontière: Que le frappeur ait atteint une limite ou non (des pistes)
  • Iswicket: Que le frappeur ait tiré ou non (des pistes)
  • Sur: A propos du nombre (Double)
  • Carrières: Il fonctionne sur cette tranche particulière (entier)
  • Horodatage: Heure à laquelle les données ont été enregistrées (horodatage)

Alors, commençons, d'accord?

Lire un fichier CSV

Quand on allume Spark, les SparkSession La variable est convenablement disponible sous le nom ‘Étincelle – étincelle‘. Nous pouvons l'utiliser pour lire différents types de fichiers, au format CSV, JSON, TEXTE, etc. Cela nous permet d'enregistrer les données en tant que trame de données Spark.

Par défaut, traite le type de données de toutes les colonnes comme une chaîne. Vous pouvez vérifier les types de données en utilisant le printSchéma fonction dans le trame de données:

schema_default-2297781

Définir le schéma

À présent, nous ne voulons pas que toutes les colonnes de notre ensemble de données soient traitées comme des chaînes. Ensuite, Que pouvons-nous y faire?

Nous pouvons définir le schéma personnalisé pour notre bloc de données dans Spark. Pour ca, nous devons créer un objet de TypeStructure qui a une liste de ChampStructure. Et bien sûr, nous devrions définir ChampStructure avec un nom de colonne, le type de données de la colonne et si les valeurs nulles sont autorisées pour la colonne particulière ou non.

Veuillez vous référer à l'extrait de code suivant pour comprendre comment créer ce schéma personnalisé:

schema_defined-6873429

Supprimer des colonnes de données

Dans tout projet d'apprentissage automatique, nous avons toujours des colonnes qui ne sont pas nécessaires pour résoudre le problème. Je suis sûr que vous avez déjà été confronté à ce dilemme auparavant, soit dans l'industrie, soit dans un hackathon en ligne.

Dans notre cas, nous pouvons utiliser la fonction drop pour supprimer la colonne des données. Utilisez le astérisque

noms_colonnes-7151119

pipeline d'apprentissage automatique pyspark

Explorer les données à l'aide de PySpark

Vérifier les dimensions des données

Contrairement aux pandas, Les cadres de données Spark n'ont pas la fonction de forme pour vérifier les dimensions des données. À sa place, nous pouvons utiliser le code ci-dessous pour vérifier les dimensions du jeu de données:

Décrire les données Étincelles décris La fonction nous donne la plupart des résultats statistiques comme la moyenne, compter, le minimum, maximum et écart type. Vous pouvez utiliser le résumé

describe_pyspark-4386114

pipeline d'apprentissage automatique pyspark

Nombre de valeurs manquantes

C'est bizarre quand nous obtenons un ensemble de données sans valeurs manquantes. Pouvez-vous vous rappeler la dernière fois que c'est arrivé?

Il est important de vérifier le nombre de valeurs manquantes présentes dans toutes les colonnes. Connaître le nombre nous aide à gérer les valeurs manquantes avant de créer un modèle d'apprentissage automatique avec ces données..

null_values_count-7052123

pipeline d'apprentissage automatique pyspark

Nombre de valeurs d'une colonne Contrairement aux pandas, nous n'avons pas le value_counts () fonction dans les dataframes Spark. Vous pouvez utiliser le par groupe

value_counts_pyspark-7372651

pipeline d'apprentissage automatique pyspark

Encoder des variables catégorielles à l'aide de PySpark

La plupart des algorithmes d'apprentissage automatique n'acceptent les données que sous forme numérique. Donc, il est essentiel de convertir toute variable catégorielle présente dans notre ensemble de données en nombres.

N'oubliez pas que nous ne pouvons pas simplement les supprimer de notre ensemble de données, car ils peuvent contenir des informations utiles. Ce serait un cauchemar de perdre ça juste parce que nous ne voulons pas savoir comment les utiliser !!

Voyons quelques-unes des méthodes pour encoder des variables catégorielles à l'aide de PySpark.

Indexation des chaînes

index_chaîne-2423420

pipeline d'apprentissage automatique pyspark

Codage à chaud

Le codage à chaud est un concept que tout scientifique des données devrait connaître. Je lui ai fait confiance à plusieurs reprises face aux valeurs manquantes. C'est une bouée de sauvetage! Voici l'avertissement: Étincelle’s OneHotEncoder

n'encode pas directement la variable catégorielle. Premier, nous devons utiliser String Indexer pour convertir la variable sous forme numérique, puis utiliser OneHotEncoderEstimator

pour encoder plusieurs colonnes de l'ensemble de données.

oencodage-5066072

pipeline d'apprentissage automatique pyspark

Assembleur de vecteurs

Un assembleur vectoriel combine une liste donnée de colonnes en une seule colonne vectorielle.

Ceci est généralement utilisé à la fin des étapes d'exploration et de prétraitement des données. À ce stade, nous travaillons généralement avec des fonctionnalités brutes ou transformées qui peuvent être utilisées pour entraîner notre modèle. Vector Assembler les convertit en une seule colonne de fonctionnalités pour former le modèle d'apprentissage automatique

vecteur-9640755

pipeline d'apprentissage automatique pyspark

Construire des pipelines de machine learning avec PySpark

Un projet de machine learning implique généralement des étapes telles que le prétraitement des données, extraction de caractéristiques, ajustement du modèle et évaluation des résultats. Nous devons effectuer de nombreuses transformations sur les données en séquence. Comme vous pouvez l'imaginer, les suivre peut devenir une tâche fastidieuse.

C'est là qu'interviennent les pipelines d'apprentissage automatique..

Un pipeline nous permet de maintenir le flux de données de toutes les transformations pertinentes nécessaires pour atteindre le résultat final. Nous devons définir les étapes du pipeline qui agissent comme une chaîne de commande pour que Spark s'exécute. Ici,

chaque étape est un transformateur ou un estimateur.

Transformateurs et estimateurs Comme le nom le suggère, Transformateurs

convertir une trame de données en une autre en mettant à jour les valeurs actuelles d'une colonne particulière (comment convertir des colonnes catégorielles en numérique) ou en le mappant à d'autres valeurs à l'aide d'une logique définie. Un estimateur implémente le pour se adapter à() méthode dans un bloc de données et produit un modèle. Par exemple, Régression logistique est un estimateur qui forme un modèle de classification lorsque nous appelons le pour se adapter à()

méthode.

Comprenons cela à l'aide de quelques exemples.

Exemples de tuyaux

sample_df_1-7162538

pipelines d'apprentissage automatique pyspark

  • Nous avons créé le bloc de données. Supposons que nous devons transformer les données dans l'ordre suivant: étape 1: Label Encode o String Index la columna
  • Catégorie 1 étape_2: Label Encode o String Index la columna
  • catégorie_2 étape_3: One-Hot Encode la colonne indexée

basic_pipeline-7612362

pipelines d'apprentissage automatique pyspark A chaque étape, nous allons passer le nom de la colonne d'entrée et de sortie et configurer le pipeline en passant les étapes définies dans la liste des Pipeline

objet.

sample_df_2-5820679

pipelines d'apprentissage automatique pyspark

À présent, Prenons un exemple plus complexe de configuration d'un pipeline. Ici, nous allons transformer les données et construire un modèle de régression logistique.

sample_df_3-6763377

pipelines d'apprentissage automatique pyspark

  • À présent, supposons que ce soit l'ordre de notre canalisation: étape 1: Label Encode o String Index la columna
  • fonctionnalité_2 étape_2: Label Encode o String Index la columna
  • feature_3 étape_3: One Hot Encoder la colonne indexée de fonctionnalité_2 Oui
  • feature_3
  • étape_4: Créer un vecteur de toutes les caractéristiques nécessaires pour former un modèle de régression logistique

pipeline_lr-1896706

pipelines d'apprentissage automatique pyspark

sample_df_4-3764859

pipelines d'apprentissage automatique pyspark

sample_df_5-1005393

pipelines d'apprentissage automatique pyspark

Parfait!

Remarques finales

Il s'agissait d'un article court mais intuitif sur la façon de créer des pipelines d'apprentissage automatique à l'aide de PySpark. Je vais le répéter encore parce que c'est tellement important: vous devez savoir comment fonctionnent ces tuyaux. C'est une grande partie de votre rôle en tant que data scientist..

Avez-vous déjà travaillé sur un projet de machine learning de bout en bout? Ou avez-vous fait partie d'une équipe qui a construit ces tuyaux dans un environnement industriel? Connectons-nous dans la section des commentaires ci-dessous et discutons.

En rapport

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.

Haut-parleur de données