Fase 3: scaricare, esplorare e trasformare un set di dati - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Fase 3: scaricare, esplorare e trasformare un set di dati

In questa fase, carica il set di dati Adult Census sulla tua istanza del notebook utilizzando la libreria SHAP (SHapley Additive exPlanations), esamina il set di dati, trasformalo e caricalo su Amazon S3. SHAP è un approccio teorico ai giochi per spiegare l'output di qualsiasi modello di machine learning. Per ulteriori informazioni su SHAP, consulta Welcome to the SHAP documentation.

Per eseguire il seguente esempio, incolla il codice di esempio in una cella dell'istanza del notebook.

Caricamento del set di dati del censimento degli adulti utilizzando SHAP

Utilizzando la libreria SHAP, importa il set di dati Adult Census come mostrato di seguito:

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

Se il kernel Jupyter corrente non dispone della libreria SHAP, installala eseguendo il comando conda seguente:

%conda install -c conda-forge shap

Se si utilizza JupyterLab, è necessario aggiornare manualmente il kernel al termine dell'installazione e degli aggiornamenti. Esegui il seguente script IPython per arrestare il kernel (il kernel si riavvierà automaticamente):

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

L'oggetto elenco feature_names dovrebbe restituire il seguente elenco di funzionalità:

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

Se inizi con dati senza etichetta, puoi utilizzare Amazon SageMaker Ground Truth per creare un flusso di lavoro di etichettatura dei dati in pochi minuti. Per ulteriori informazioni, consulta Label Data.

Panoramica del set di dati

Esegui il seguente script per visualizzare la panoramica statistica del set di dati e gli istogrammi delle funzionalità numeriche.

display(X.describe()) hist = X.hist(bins=30, sharey=True, figsize=(20, 10))
Panoramica del set di dati del censimento degli adulti.
Suggerimento

Se desideri utilizzare un set di dati che deve essere pulito e trasformato, puoi semplificare e ottimizzare la preelaborazione dei dati e l'ingegneria delle funzionalità utilizzando Amazon SageMaker Data Wrangler. Per ulteriori informazioni, consulta Prepare i dati ML con Amazon SageMaker Data Wrangler.

Suddivisione del set di dati in set di dati di addestramento, di convalida e di test

Utilizzando Sklearn, suddividi il set di dati in un set di addestramento e un set di test. Il set di addestramento viene utilizzato per addestrare il modello, mentre il set di test viene utilizzato per valutare le prestazioni del modello addestrato finale. Il set di dati viene ordinato casualmente in base al seed casuale fisso: l'80% del set di dati per il set di addestramento e il 20% per un set di 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]

Suddividi il set di addestramento per separare un set di convalida. Il set di convalida viene utilizzato per valutare le prestazioni del modello addestrato ottimizzando al contempo gli iperparametri del modello. Il 75% del set di addestramento diventa il set di addestramento finale e il resto è il set di convalida.

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]

Utilizzando il pacchetto pandas, allinea esplicitamente ogni set di dati concatenando le funzionalità numeriche con le etichette vere.

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)

Controlla se il set di dati è suddiviso e strutturato come previsto:

train
Il set di dati di addestramento.
validation
Il set di dati di convalida.
test
Il set di dati di test.

Conversione dei set di dati di addestramento e di convalida in file CSV

Converti gli oggetti dataframe train e validation in file CSV in modo che corrispondano al formato del file di input per l'algoritmo 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)

Caricamento dei set di dati su Amazon S3

Utilizzando SageMaker e Boto3, carica i set di dati di addestramento e convalida nel bucket Amazon S3 predefinito. I set di dati nel bucket S3 verranno utilizzati da un'istanza ottimizzata per il calcolo su SageMaker Amazon EC2 per la formazione.

Il codice seguente configura l'URI predefinito del bucket S3 per la SageMaker sessione corrente, crea una nuova demo-sagemaker-xgboost-adult-income-prediction cartella e carica i set di dati di addestramento e convalida nella sottocartella. 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')

Esegui quanto segue AWS CLI per verificare se i file CSV sono stati caricati correttamente nel bucket S3.

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

Dovrebbe essere restituito il seguente output:

Output del comando CLI per controllare i set di dati nel bucket S3.