Préparer un jeu de données - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Préparer un jeu de données

Au cours de cette étape, vous chargez le jeu de données Adult Census sur votre instance de bloc-notes à l'aide de la bibliothèque SHAP (SHapleyadditiveexPlanations), vous passez en revue le jeu de données, vous le transformez et vous le chargez sur Amazon S3. SHAPest une approche de théorie des jeux qui explique le résultat de n'importe quel modèle d'apprentissage automatique. Pour plus d'informationsSHAP, voir Bienvenue dans la SHAP documentation.

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

Charger un ensemble de données de recensement pour adultes à SHAP

À l'aide de la SHAP bibliothèque, 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 possède pas la SHAP bibliothèque, installez-la en exécutant la commande suivante : conda

%conda install -c conda-forge shap

Si vous l'utilisez JupyterLab, vous devez actualiser manuellement le noyau une fois l'installation et les mises à jour terminées. Exécutez le IPython script 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 non étiquetées, vous pouvez utiliser Amazon SageMaker Ground Truth pour créer un flux de travail 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 ensemble 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, consultez 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. L'ensemble d'entraînement est utilisé pour entraîner le modèle, tandis que l'ensemble de tests sert à évaluer les performances du modèle entraîné final. Le jeu de données est trié de façon aléatoire avec le nombre aléatoire : 80 % du jeu de données pour l'ensemble 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 l'ensemble d'entraînement pour séparer un ensemble de validation. L'ensemble de validation est utilisé pour évaluer les performances du modèle entraîné tout en réglant les hyperparamètres du modèle. 75 % de l'ensemble d'entraînement devient l'ensemble d'entraînement final et le reste est l'ensemble 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 l'ensemble de données est divisé et structuré comme prévu :

train
Exemple de jeu de données d'entraînement.
validation
Exemple de jeu de données de validation.
test
Exemple de jeu de données de test.

Convertir les ensembles de données de train et de validation en CSV fichiers

Convertissez les objets train et validation dataframe en CSV fichiers correspondant au format de fichier d'entrée de l'XGBoostalgorithme.

# 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 Boto3, téléchargez les ensembles de données de formation et de validation dans le compartiment Amazon S3 par défaut. Les ensembles de données du compartiment S3 seront utilisés par une instance optimisée pour le calcul SageMaker sur Amazon EC2 à des fins de formation.

Le code suivant configure le compartiment S3 par défaut URI pour votre SageMaker session en cours, crée un nouveau demo-sagemaker-xgboost-adult-income-prediction dossier et télécharge les ensembles de données de formation et de validation dans le data sous-dossier.

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 ce qui suit AWS CLI pour vérifier si les CSV fichiers sont correctement chargés dans le compartiment S3.

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

La sortie suivante doit être renvoyée :

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