Création de pipelines de machine learning à l'aide de Snowflake et Dask
Dans cet article, je souhaite partager certains des outils que j'ai explorés récemment et vous montrer comment je les utilise et comment ils ont contribué à améliorer l'efficacité de mon flux de travail. Les deux dont je parlerai en particulier sont Snowflake et Dask. Deux outils très différents mais qui se complètent bien notamment dans le cadre du ML Lifecycle.
By Daniel Foley, Scientifique des données
Introduction
Récemment, j'ai essayé de trouver de meilleures façons d'améliorer mon flux de travail en tant que data scientist. J'ai tendance à passer une bonne partie de mon temps à modéliser et à créer des ETL dans mon travail. Cela signifie que je dois de plus en plus compter sur des outils pour gérer de manière fiable et efficace de grands ensembles de données. J'ai rapidement réalisé que l'utilisation de pandas pour manipuler ces ensembles de données n'est pas toujours une bonne approche et cela m'a incité à rechercher d'autres alternatives.
Dans cet article, je souhaite partager certains des outils que j'ai explorés récemment et vous montrer comment je les utilise et comment ils ont contribué à améliorer l'efficacité de mon flux de travail. Les deux dont je parlerai en particulier sont Snowflake et Dask. Deux outils très différents mais qui se complètent bien notamment dans le cadre du ML Lifecycle. J'espère qu'après avoir lu cet article, vous aurez une bonne compréhension de ce que sont Snowflake et Dask, comment ils peuvent être utilisés efficacement et être en mesure d'être opérationnel avec vos propres cas d'utilisation.
Plus précisément, je souhaite vous montrer comment créer un pipeline ETL à l'aide de Snowflake et Python pour générer des données d'entraînement pour une tâche d'apprentissage automatique. Je veux ensuite présenter Dask et Nuage de Saturne et vous montrer comment vous pouvez tirer parti du traitement parallèle dans le cloud pour vraiment accélérer le processus de formation ML afin d'augmenter votre productivité en tant que data scientist.
Construire des ETL dans Snowflake et Python
Avant de passer au codage, je ferais mieux d'expliquer brièvement ce qu'est Snowflake. C'est une question que j'ai récemment posée lorsque mon équipe a décidé de commencer à l'utiliser. À un niveau élevé, il s'agit d'un entrepôt de données dans le cloud. Après avoir joué avec pendant un moment, j'ai réalisé à quel point il était puissant. Je pense que pour moi, l'une des fonctionnalités les plus utiles est les entrepôts virtuels que vous pouvez utiliser. Un entrepôt virtuel vous donne accès aux mêmes données mais est complètement indépendant des autres entrepôts virtuels, de sorte que les ressources de calcul ne sont pas partagées entre les équipes. Cela s'est avéré très utile car il supprime tout risque de problèmes de performances causés par d'autres utilisateurs exécutant des requêtes tout au long de la journée. Cela a entraîné moins de frustration et moins de temps perdu à attendre que les requêtes soient exécutées.
Puisque nous allons utiliser Snowflake, je vais brièvement décrire comment vous pouvez le configurer et commencer à l'expérimenter vous-même. Nous devons faire ce qui suit :
- Créer un compte Snowflake
- Transférez nos données dans Snowflake
- Écrivez et testez nos requêtes à l'aide de SQL et de l'interface utilisateur Snowflake
- Écrire une classe Python qui peut exécuter nos requêtes pour générer notre ensemble de données final pour la modélisation
Créer un compte est aussi simple que de s'inscrire pour un essai gratuit sur leur site de NDN Collective. Une fois que vous avez fait cela, vous pouvez télécharger la CLI snowsql ici. Cela facilitera l'ajout de données à Snowflake. Après avoir suivi ces étapes, nous pouvons essayer de nous connecter à Snowflake en utilisant nos informations d'identification et la ligne de commande.
snowsql -a <account_name> -u <user_name>
Vous pouvez trouver votre nom de compte dans l'URL lorsque vous vous connectez à l'interface utilisateur de Snowflake. Il devrait ressembler à ceci : xxxxx.europe-west2.gcp. Ok, passons à l'étape suivante et transférons nos données dans Snowflake. Il y a quelques étapes que nous devons suivre ici, à savoir :
- Créer notre entrepôt virtuel
- Créer une base de données
- Définir et Créer nos tables
- Créer une table intermédiaire pour nos fichiers CSV
- Copier les données dans nos tables
Heureusement, ce n'est pas trop difficile et nous pouvons le faire entièrement en utilisant la CLI snowsql. Pour ce projet, j'utiliserai un ensemble de données plus petit que je ne le souhaiterais, mais malheureusement, je ne peux utiliser aucune des données de mon entreprise et il peut être assez difficile de trouver de grands ensembles de données appropriés en ligne. J'ai cependant trouvé des données de transaction de Dunnhumby qui sont librement disponibles sur Kaggle. Juste pour le plaisir, je crée un ensemble de données synthétiques beaucoup plus volumineux en utilisant ces données pour tester la capacité de Dask à relever le défi par rapport à sklearn.
Tout d'abord, nous devons configurer un entrepôt virtuel et une base de données à l'aide des commandes suivantes dans l'interface utilisateur de Snowflake.
engendrent or remplacer entrepôt analytics_wh comprenant
taille_entrepôt=”X-PETIT”
suspension_auto=180
auto_resume=vrai
initialement_suspendu=true ;
engendrent or remplacer base de données dunnhumby ;
Nos données se composent de 6 CSV que nous allons convertir en 6 tableaux. Je ne passerai pas trop de temps à parcourir l'ensemble de données car cet article concerne davantage l'utilisation de Snowflake et Dask que l'interprétation des données.
Vous trouverez ci-dessous les commandes que nous pouvons utiliser pour créer nos tables. Tout ce que vous aurez besoin de savoir à l'avance, ce sont les colonnes et les types de données avec lesquels vous travaillerez.
create or replace table campaign_desc ( description string, campaign number,
start_day number,
end_day number ); create or replace table campaign_table ( description string, Household_key number, campaign number ); create or replace table coupon ( COUPON_UPC number, product_id number, campaign number ); create or replace table coupon_redempt ( household_key number, day number, coupon_upc number, campaign number ); create or replace table transactions ( household_key number, BASKET_ID number, day number, product_id number, quantity number, sales_value number, store_id number, retail_disc decimal, trans_time number, week_no number, coupon_disc decimal, coupon_match_disc decimal ); create or replace table demographic_data ( age_dec string, marital_status_code string, income_desc string, homeowner_desc string, hh_comp_desc string, household_size_desc string, kid_category_desc string, Household_key number);
Maintenant que nos tables sont créées, nous pouvons commencer à réfléchir à la manière d'y insérer des données. Pour cela, nous aurons besoin de mettre en scène nos fichiers CSV. Il s'agit essentiellement d'une étape intermédiaire afin que Snowflake puisse charger directement les fichiers de notre scène dans nos tables. Nous pouvons utiliser le PUT commande pour mettre des fichiers locaux dans notre scène, puis la COPIER DANS commande pour indiquer à Snowflake où placer ces données.
use database dunnhumby; create or replace stage dunnhumby_stage; PUT file://campaigns_table.csv @dunnhumby.public.dunnhumby_stage; PUT file://campaigns_desc.csv @dunnhumby.public.dunnhumby_stage; PUT file://coupon.csv @dunnhumby.public.dunnhumby_stage; PUT file://coupon_d=redempt.csv @dunnhumby.public.dunnhumby_stage; PUT file://transaction_data.csv @dunnhumby.public.dunnhumby_stage; PUT file://demographics.csv @dunnhumby.public.dunnhumby_stage;
Pour une vérification rapide, vous pouvez exécuter cette commande pour vérifier ce qui se trouve dans la zone de préparation.
ls @dunnhumby.public.dunnhumby_stage;
Il ne nous reste plus qu'à copier les données dans nos tables à l'aide des requêtes ci-dessous. Vous pouvez les exécuter soit dans l'interface utilisateur de Snowflake, soit dans la ligne de commande après vous être connecté à Snowflake.
copy into campaign_table from @dunnhumby.public.dunnhumby_stage/campaigns_table.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into campaign_desc from @dunnhumby.public.dunnhumby_stage/campaign_desc.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into coupon from @dunnhumby.public.dunnhumby_stage/coupon.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into coupon_redempt from @dunnhumby.public.dunnhumby_stage/coupon_redempt.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into transactions from @dunnhumby.public.dunnhumby_stage/transaction_data.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into demographic_data from @dunnhumby.public.dunnhumby_stage/demographics.csv.gz file_format = ( type = csv skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’);
Ok super, avec un peu de chance, nous avons nos données dans nos tableaux du premier coup. Oh, si seulement c'était aussi simple, tout ce processus m'a pris quelques essais pour bien faire (attention aux fautes d'orthographe). J'espère que vous pourrez suivre cela et être prêt à partir. Nous nous rapprochons des choses intéressantes, mais les étapes ci-dessus sont une partie essentielle du processus, alors assurez-vous de comprendre chacune de ces étapes.
Ecrire notre Pipeline en SQL
Dans cette prochaine étape, nous allons écrire les requêtes pour générer notre cible, nos fonctionnalités et enfin produire un ensemble de données d'entraînement. Une approche pour créer un ensemble de données pour la modélisation consiste à lire ces données en mémoire et à utiliser des pandas pour créer de nouvelles fonctionnalités et joindre toutes les trames de données ensemble. C'est généralement l'approche que vous voyez sur Kaggle et dans d'autres didacticiels en ligne. Le problème avec cela est qu'il n'est pas très efficace, en particulier lorsque vous travaillez avec des ensembles de données de taille raisonnable. Pour cette raison, c'est une bien meilleure idée d'externaliser le gros du travail à quelque chose comme Snowflake qui gère extrêmement bien des ensembles de données volumineux et vous fera probablement gagner beaucoup de temps. Je ne passerai pas beaucoup de temps à plonger dans les détails de notre ensemble de données ici car ce n'est pas vraiment vital pour ce que j'essaie de montrer. En général, cependant, vous souhaiterez passer beaucoup de temps à explorer et à comprendre vos données avant de commencer la modélisation. L'objectif de ces requêtes sera de prétraiter les données et de créer des fonctionnalités simples que nous pourrons utiliser ultérieurement dans nos modèles.
Définition de la cible
De toute évidence, un élément essentiel de l'apprentissage automatique supervisé consiste à définir une cible appropriée à prédire. Pour notre cas d'utilisation, nous allons prédire l'attrition en calculant si un utilisateur effectue ou non une autre visite dans les deux semaines suivant une semaine limite. Le choix de 2 semaines est assez arbitraire et dépendra du problème spécifique que nous essayons de résoudre, mais supposons simplement que cela convient à ce projet. En général, vous souhaiterez analyser soigneusement vos clients pour comprendre la répartition des écarts entre les visites afin d'arriver à une définition appropriée du taux de désabonnement.
L'idée principale ici est que pour chaque table, nous voulons avoir une ligne par Household_key contenant des valeurs pour chacune de nos fonctionnalités.
Fonctionnalités de la campagne
Caractéristiques des transactions
Ci-dessous, nous créons quelques métriques simples basées sur des statistiques agrégées telles que la moyenne, le maximum et l'écart type.
Caractéristiques démographiques
Cet ensemble de données contient de nombreuses données manquantes, j'ai donc décidé d'utiliser l'imputation ici. Il existe de nombreuses techniques pour les données manquantes, allant de la suppression des données manquantes aux méthodes d'imputation avancées. Je viens de me simplifier la vie ici et de remplacer les valeurs manquantes par le mode. Je ne recommanderais pas nécessairement d'adopter cette approche en général, car il est vraiment important de comprendre pourquoi ces données manquent pour décider comment les traiter, mais pour les besoins de cet exemple, je vais continuer et adopter l'approche facile. Nous calculons d'abord le mode pour chacune de nos caractéristiques, puis utilisons coalesce pour remplacer chaque ligne par le mode si des données sont manquantes.
Données d'entraînement
Enfin, nous construisons une requête pour nos données d'entraînement en joignant nos tables principales et nous nous retrouvons avec une table contenant notre cible, notre campagne, les transactions et les caractéristiques démographiques que nous pouvons utiliser pour construire un modèle.
En passant, pour ceux qui souhaitent en savoir plus sur les fonctionnalités et les nuances de Snowflake, je recommanderais le livre suivant : Livre de recettes de flocon de neige. J'ai commencé à lire ce livre et il est plein d'informations vraiment utiles sur la façon d'utiliser Snowflake et va dans beaucoup plus de détails que je ne le fais ici.
Code Python pour ETL
La dernière pièce dont nous avons besoin pour cet ETL est d'écrire un script pour l'exécuter. Maintenant, cela n'est vraiment nécessaire que si vous prévoyez d'exécuter régulièrement un ETL comme celui-ci, mais c'est une bonne pratique et il est beaucoup plus facile d'exécuter l'ETL en cas de besoin.
Discutons brièvement des principaux composants de notre classe EtlTraining. Notre classe prend une entrée qui est la semaine limite. Cela est dû à la façon dont les données sont définies dans notre ensemble de données, mais normalement, ce serait dans un format de date qui correspond à la date limite que nous voulons choisir pour générer des données de formation.
Nous initialisons une liste de nos requêtes afin de pouvoir facilement les parcourir et les exécuter. Nous créons également un dictionnaire contenant nos paramètres que nous transmettons à notre connexion Snowflake. Ici, nous utilisons des variables d'environnement que nous avons configurées dans Saturn Cloud. Ici est un guide sur la façon de procéder. Il n'est pas trop difficile de se connecter à Snowflake, il suffit d'utiliser le connecteur Snowflake et de passer dans notre dictionnaire d'identifiants. Nous implémentons cela dans la méthode de connexion Snowflake et renvoyons cette connexion en tant qu'attribut.
Pour rendre ces requêtes un peu plus faciles à exécuter, j'enregistre chaque requête en tant que variable de chaîne python dans le fichier ml_query_pipeline.py. La méthode execute_etl fait exactement ce qu'elle dit sur l'étain. Nous parcourons chaque requête, la formatons, l'exécutons et terminons en fermant la connexion Snowflake.
Pour exécuter cet ETL, nous pouvons simplement taper les commandes ci-dessous dans le terminal. (où ml_pipeline est le nom du script ci-dessus.)
python -m ml_pipeline -w 102 -j ‘train’
En bref, vous souhaiterez probablement exécuter un ETL comme celui-ci à intervalles réguliers. Par exemple, si vous souhaitez faire des prédictions quotidiennes, vous devrez générer un ensemble de données comme celui-ci chaque jour pour le transmettre à votre modèle afin d'identifier les clients susceptibles de se désabonner. Je n'entrerai pas dans les détails ici, mais dans mon travail, nous utilisons Airflow pour orchestrer nos ETL, je vous recommande donc de le vérifier si vous êtes intéressé. En fait, j'ai récemment acheté un livre 'Pipelines de données avec Apache Airflow' qui, je pense, est génial et donne vraiment des exemples solides et des conseils sur la façon d'utiliser le flux d'air.
Dask et Modélisation
Maintenant que nous avons construit notre pipeline de données, nous pouvons commencer à penser à la modélisation. L'autre objectif principal que j'ai pour cet article est de mettre en évidence les avantages de l'utilisation de Dask dans le cadre du processus de développement ML et de vous montrer à quel point il est facile à utiliser.
Pour cette partie du projet, j'ai également utilisé Nuage de Saturne qui est un outil vraiment sympa que j'ai découvert récemment qui nous permet d'exploiter la puissance de Dask sur un cluster d'ordinateurs dans le cloud. Les principaux avantages de l'utilisation de Saturn pour moi sont qu'il est vraiment facile de partager votre travail, super simple pour faire évoluer votre calcul au fur et à mesure que vous en avez besoin et il a une option de niveau gratuit. Le développement de modèles en général est un très bon cas d'utilisation pour Dask car nous voulons généralement former un tas de modèles différents et voir ce qui fonctionne le mieux. Plus vite nous pouvons le faire, mieux c'est, car nous avons plus de temps pour nous concentrer sur d'autres aspects importants du développement du modèle. Semblable à Snowflake, il vous suffit de vous inscrire ici et vous pouvez très rapidement lancer une instance de Jupyter lab et commencer à l'expérimenter vous-même.
Maintenant, je me rends compte à ce stade que j'ai mentionné Dask à quelques reprises mais que je n'ai jamais vraiment expliqué ce que c'est. Alors laissez-moi prendre un moment pour vous donner un aperçu de très haut niveau de Dask et pourquoi je pense que c'est génial. Très simplement, Dask est une bibliothèque python qui tire parti du calcul parallèle pour vous permettre de traiter et d'effectuer des opérations sur de très grands ensembles de données. Et, la meilleure partie est que si vous êtes déjà familier avec Python, alors Dask devrait être très simple car la syntaxe est très similaire.
Le graphique ci-dessous met en évidence les principaux composants de Dask.
La source: Documentation sur les tâches
Les collections nous permettent de créer un graphique de tâches qui peuvent ensuite être exécutées sur plusieurs ordinateurs. Certaines de ces structures de données semblent probablement assez familières, telles que les tableaux et les cadres de données, et elles sont similaires à ce que vous trouveriez en python, mais avec quelques différences importantes. Par exemple, vous pouvez considérer une trame de données Dask comme un ensemble de trames de données pandas construites de manière à nous permettre d'effectuer des opérations en parallèle.
Passant des collections, nous avons le planificateur. Une fois que nous avons créé le graphique de tâches, le planificateur gère le reste pour nous. Il gère le flux de travail et envoie ces tâches à une seule machine ou les distribue sur un cluster. J'espère que cela vous donne un très bref aperçu du fonctionnement de Dask. Pour plus d'informations, je vous suggère de consulter le Documentation ou cette livre. Les deux sont de très bonnes ressources pour approfondir ce sujet.
Code Python pour la modélisation
Lors de la modélisation, j'ai tendance à avoir un petit nombre d'algorithmes de référence que j'essaierai toujours en premier. Cela me donnera généralement une bonne idée de ce qui pourrait convenir au problème spécifique que j'ai. Ces modèles sont la régression logistique, la forêt aléatoire et le GradientBoosting. D'après mon expérience, lorsque vous travaillez avec des données tabulaires, ces algorithmes vous donnent généralement de très bons résultats. Ci-dessous, nous construisons un pipeline de modélisation sklearn en utilisant ces 3 modèles. Les modèles exacts que nous utilisons ici ne sont pas vraiment importants car le pipeline devrait fonctionner pour n'importe quel modèle de classification sklearn, c'est juste ma préférence.
Sans plus tarder, plongeons dans le code. Heureusement, nous avons sous-traité la majeure partie de notre prétraitement à Snowflake afin de ne pas trop déranger nos données de formation ici, mais nous ajouterons quelques étapes supplémentaires à l'aide de pipelines sklearn.
Le premier extrait de code ci-dessous montre le pipeline lors de l'utilisation de sklearn. Remarquez que notre ensemble de données est un ancien cadre de données pandas et que nos étapes de prétraitement sont toutes effectuées à l'aide de méthodes sklearn. Il ne se passe rien de particulièrement anormal ici. Nous lisons nos données à partir de la table produite par notre ETL Snowflake et les transmettons à un pipeline sklearn. Les étapes de modélisation habituelles s'appliquent ici. Nous divisons l'ensemble de données en train et testons et effectuons un prétraitement, à savoir imputer les valeurs manquantes à l'aide de la médiane, mettre à l'échelle les données et encoder nos données catégorielles en une seule fois. Je suis un grand fan des pipelines sklearn et je les utilise essentiellement chaque fois que je développe des modèles de nos jours, ils facilitent vraiment le code propre et concis.
Comment ce pipeline fonctionne-t-il sur un ensemble de données contenant environ 2 millions de lignes ? Eh bien, l'exécution de ce modèle sans aucun réglage d'hyperparamètre prend environ 34 minutes. Ouch, un peu lent. Vous pouvez imaginer combien de temps cela prendrait si nous voulions faire n'importe quel type de réglage d'hyperparamètres. Ok, donc pas idéal mais voyons comment Dask relève le défi.
Code Python DaskML
Notre objectif ici est de voir si nous pouvons battre le pipeline sklearn ci-dessus, alerte spoiler, nous le pouvons certainement. La chose intéressante à propos de Dask est que la barrière à l'entrée lorsque vous êtes déjà familiarisé avec python est assez faible. Nous pouvons mettre ce pipeline en place et fonctionner dans Dask avec seulement quelques modifications.
Le premier changement que vous remarquerez probablement est que nous avons des importations différentes. L'une des principales différences entre ce pipeline et le précédent est que nous utiliserons une trame de données Dask au lieu d'une trame de données pandas pour former notre modèle. Vous pouvez considérer une trame de données Dask comme un groupe de trames de données pandas où nous pouvons effectuer des calculs sur chacune en même temps. C'est le cœur du parallélisme de Dask et c'est ce qui va réduire le temps de formation pour ce pipeline.
Remarquez que nous utilisons @dask.retardé en tant que décorateur de notre load_training_data fonction. Cela demande à Dask de paralléliser cette fonction pour nous.
Nous allons également importer certaines méthodes de prétraitement et de pipeline de Dask et, plus important encore, nous devrons importer SaturnCluster, ce qui nous permettra de créer un cluster pour entraîner nos modèles. Une autre différence clé avec ce code est que nous utilisons dask.persist après notre fractionnement d'essai de train. Avant ce point, aucune de nos fonctions n'a été réellement calculée en raison de l'évaluation paresseuse de Dask. Une fois que nous utilisons la méthode persist, nous disons à Dask d'envoyer nos données aux travailleurs et d'exécuter les tâches que nous avons créées jusqu'à présent et de laisser ces objets sur le cluster.
Enfin, nous entraînons nos modèles en utilisant la méthode retardée. Encore une fois, cela nous permet de créer notre pipeline de manière paresseuse. Le pipeline n'est pas exécuté tant que nous n'avons pas atteint ce code :
fit_pipelines = dask.compute(*pipelines_)
Cette fois, il ne nous a fallu qu'environ 10 minutes pour exécuter ce pipeline sur exactement le même ensemble de données. C'est une accélération d'un facteur de 3.4, pas trop minable. Maintenant, si nous le voulions, nous pourrions accélérer encore plus en augmentant nos ressources de calcul d'une simple pression sur un bouton dans Saturn.
Déploiement de notre Pipeline
J'ai mentionné plus tôt que vous voudrez probablement exécuter un pipeline comme celui-ci assez régulièrement en utilisant quelque chose comme le flux d'air. Il se trouve que si vous ne voulez pas les tracas initiaux de tout configurer pour le flux d'air, Saturn Cloud offre une alternative simple avec Jobs. Les tâches nous permettent de regrouper notre code et de l'exécuter à intervalles réguliers ou selon les besoins. Tout ce que vous avez à faire est d'aller sur un projet existant et de cliquer sur créer une tâche. Une fois que nous avons fait cela, cela devrait ressembler à ce qui suit :
La source: Saturn
À partir de là, tout ce que nous devons faire est de nous assurer que nos fichiers python ci-dessus se trouvent dans le répertoire de l'image et nous pouvons entrer notre commande python ci-dessus.
python -m ml_pipeline -w 102 -j 'train'
Nous pouvons également configurer un calendrier en utilisant la syntaxe cron pour exécuter l'ETL quotidiennement si nous le souhaitons. Pour les intéressés, voici un Tutorial cela va dans tous les détails.
Conclusions et points à retenir
Eh bien, nous avons atteint la fin de notre projet à ce stade. Maintenant, évidemment, j'ai laissé de côté certaines parties clés du cycle de développement ML telles que le réglage des hyperparamètres et le déploiement de notre modèle, mais peut-être que je laisserai cela pour un autre jour. Est-ce que je pense que vous devriez essayer Dask ? Je ne suis en aucun cas un expert, mais d'après ce que j'ai vu jusqu'à présent, cela semble certainement très utile et je suis très enthousiaste à l'idée de l'expérimenter davantage et de trouver plus d'opportunités de l'intégrer dans mon travail quotidien en tant que data scientist. J'espère que vous avez trouvé cela utile et que vous aussi pouvez voir certains des avantages de Snowflake et Dask et vous commencerez à les expérimenter par vous-même.
Resources
- Pipelines de données avec Apache Airflow
- Livre de recettes de flocon de neige
- Science des données à grande échelle avec Python et Dask
- Coursera : SQL pour la science des données
Certains de mes autres articles pourraient vous intéresser
Construisons un pipeline de données en continu
Modélisation du mélange gaussien (GMM)
Une approche bayésienne de la prévision des séries chronologiques
Remarque : Certains des liens de cet article sont des liens d'affiliation.
Bio: Daniel Foley est un ancien économiste devenu Data Scientist travaillant dans l'industrie du jeu mobile.
ORIGINALE. Republié avec permission.
Connexe:
Source : https://www.kdnuggets.com/2021/07/building-machine-learning-pipelines-snowflake-dask.html
- "
- &
- 102
- 2021
- accès
- Compte
- Supplémentaire
- Avantage
- conseils
- Affiliation
- algorithmes
- Tous
- Amazon
- Apache
- Réservé
- autour
- auto
- LES MEILLEURS
- Bit
- construire
- Développement
- Bouquet
- Campagne
- cas
- causé
- challenge
- Change
- vérification
- classification
- plus
- le cloud
- code
- Codage
- composant
- calcul
- ordinateurs
- informatique
- Coursera
- La création
- Lettres de créance
- Clients
- données
- science des données
- Data Scientist
- ensemble de données
- entrepôt de données
- Base de données
- journée
- affaire
- l'apprentissage en profondeur
- démographique
- détail
- développer
- Développement
- DID
- Directeur
- efficace
- Les ingénieurs
- Environment
- expérience
- Fonctionnalités:
- finalement
- fin
- Prénom
- Focus
- suivre
- le format
- Gratuit
- plein
- fonction
- jeux
- L'industrie du jeu
- Général
- Bien
- GPU
- l'
- guide
- ici
- Haute
- Souligner
- Comment
- How To
- HTTPS
- majeur
- idée
- identifier
- image
- Améliore
- industrie
- info
- d'information
- vous aider à faire face aux problèmes qui vous perturbent
- IT
- Emploi
- Emplois
- rejoindre
- saut
- ACTIVITES
- gros
- APPRENTISSAGE
- apprentissage
- Niveau
- Bibliothèque
- Gamme
- Liste
- charge
- locales
- Location
- machine learning
- Métrique
- million
- ML
- Breeze Mobile
- Le jeu mobile
- modèle
- Bougez
- à savoir
- Nouvelles fonctionnalités
- Offres Speciales
- en ligne
- Opérations
- Option
- Autre
- performant
- Beaucoup
- Poteaux
- power
- Prédictions
- Produit
- productivité
- Projet
- public
- Python
- en cours
- réduire
- régression
- Resources
- REST
- Résultats
- Courir
- pour le running
- Escaliers intérieurs
- mise à l'échelle
- Sciences
- scientifiques
- Série
- set
- mise
- Partager
- commun
- étapes
- petit
- So
- RÉSOUDRE
- vitesse
- passer
- Dépenses
- Spin
- scission
- SQL
- Étape
- Commencer
- j'ai commencé
- statistiques
- Stories
- streaming
- Target
- tester
- En pensant
- fiable
- top
- -nous
- Formation
- transaction
- Transactions
- procès
- tutoriels
- ui
- us
- utilisateurs
- Salle de conférence virtuelle
- Entrepots
- semaine
- Qu’est ce qu'
- dans les
- activités principales
- ouvriers
- workflow
- vos contrats
- écriture
- X
- années