Étape 3 : télécharger, explorer et transformer un jeu de données - Amazon SageMaker

Étape 3 : télécharger, explorer et transformer un jeu de données

Dans cette étape, vous chargez le jeu de données du recensement des adultes sur votre instance de bloc-notes à l'aide de la bibliothèque SHAP (SHAP (SHapley Additive exPlanations), exminez le jeu de données, le transformez et le téléchargez dans Amazon S3.

Pour exécuter l'exemple suivant, collez l'exemple de code dans une cellule de votre instance de bloc-notes.

Charger le jeu de données du recensement des adultes à l'aide de SHAP

À l'aide de la bibliothèque SHAP, importez le jeu de données du recensement des adultes comme indiqué ci-dessous :

import shap X, y = shap.datasets.adult() X_display, y_display = shap.datasets.adult(display=True) feature_names = list(X.columns) feature_names
Note

Si le noyau Jupyter actuel ne dispose pas de la bibliothèque SHAP, installez-la en exécutant la commande conda suivante :

%conda install -c conda-forge shap

Si vous utilisez JupyterLab, vous devez actualiser manuellement le noyau une fois l'installation et les mises à jour terminées. Exécutez le script IPython suivant pour arrêter le noyau (le noyau redémarrera automatiquement) :

import IPython IPython.Application.instance().kernel.do_shutdown(True)

L'objet de liste feature_names doit renvoyer la liste de fonctions suivante :

['Age', 'Workclass', 'Education-Num', 'Marital Status', 'Occupation', 'Relationship', 'Race', 'Sex', 'Capital Gain', 'Capital Loss', 'Hours per week', 'Country']
Astuce

Si vous commencez avec des données sans étiquette, vous pouvez utiliser Amazon SageMaker Ground Truth pour créer un flux d'étiquetage des données en quelques minutes. Pour en savoir plus, veuillez consulter Étiqueter les données.

Présentation du jeu de données

Exécutez le script suivant pour afficher la présentation statistique du jeu de données et des histogrammes des fonctions numériques.

display(X.describe()) hist = X.hist(bins=30, sharey=True, figsize=(20, 10))

                Présentation du jeu de données du recensement des adultes.
Astuce

Si vous souhaitez utiliser un jeu de données qui doit être nettoyé et transformé, vous pouvez simplifier et rationaliser le prétraitement des données et l'ingénierie des fonctionnalités à l'aide d'Amazon SageMaker Data Wrangler. Pour en savoir plus, veuillez consulter Préparer les données ML avec Amazon SageMaker Data Wrangler.

Diviser le jeu de données en jeux de données d'entraînement, de validation et de test

Avec Sklearn, divisez le jeu de données en jeu d'entraînement et de test. Le jeu de données est trié aléatoirement avec le nombre aléatoire : 80 % du jeu de données pour le jeu d'entraînement et 20 % pour un jeu de test.

from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) X_train_display = X_display.loc[X_train.index]

Divisez le jeu d'entraînement pour séparer un jeu de validation. 75 % du jeu d'entraînement devient le jeu d'entraînement final et le reste est le jeu de validation.

X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.25, random_state=1) X_train_display = X_display.loc[X_train.index] X_val_display = X_display.loc[X_val.index]

À l'aide du package pandas, alignez explicitement chaque jeu de données en concaténant les fonctions numériques avec les étiquettes true.

import pandas as pd train = pd.concat([pd.Series(y_train, index=X_train.index, name='Income>50K', dtype=int), X_train], axis=1) validation = pd.concat([pd.Series(y_val, index=X_val.index, name='Income>50K', dtype=int), X_val], axis=1) test = pd.concat([pd.Series(y_test, index=X_test.index, name='Income>50K', dtype=int), X_test], axis=1)

Vérifiez si le jeu de données est divisé et structuré comme prévu :

train

                Le jeu de données d'entraînement.
validation

                Le jeu de données de validation.
test

                Le jeu de données de test.

Conversion des jeux de données d'entraînement et de validation en fichiers CSV

Convertissez les objets de trame de données train et validation en fichiers CSV pour correspondre au format de fichier d'entrée pour l'algorithme XGBoost.

# Use 'csv' format to store the data # The first column is expected to be the output column train.to_csv('train.csv', index=False, header=False) validation.to_csv('validation.csv', index=False, header=False)

Télécharger les jeux de données dans Amazon S3

À l'aide de SageMaker et de Boto3, téléchargez les jeux de données d'entraînement et de validation dans le compartiment Amazon S3 par défaut. Les jeux de données du compartiment S3 seront utilisés par une instance SageMaker optimisée pour le calcul sur Amazon EC2 pour l'entraînement.

Le code suivant configure l'URI du compartiment S3 par défaut pour votre session SageMaker actuelle, crée un dossier demo-sagemaker-xgboost-adult-income-prediction et télécharge les jeux de données d'entraînement et de validation dans le sous-dossier data.

import sagemaker, boto3, os bucket = sagemaker.Session().default_bucket() prefix = "demo-sagemaker-xgboost-adult-income-prediction" boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'data/train.csv')).upload_file('train.csv') boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'data/validation.csv')).upload_file('validation.csv')

Exécutez la AWS CLI suivante pour vérifier si les fichiers CSV ont été correctement téléchargés dans le compartiment S3.

! aws s3 ls {bucket}/{prefix}/data --recursive

La sortie suivante doit être renvoyée :


                Sortie de la commande de CLI pour vérifier les jeux de données dans le compartiment S3.