Preparare 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à.

Preparare un set di dati

In questo passaggio, carichi il set di dati Adult Census sull'istanza del notebook utilizzando la libreria SHAP (SHapleyAdditiveexPlanations), rivedi il set di dati, lo trasformi e lo carichi su Amazon S3. SHAPè un approccio teorico dei giochi per spiegare l'output di qualsiasi modello di apprendimento automatico. Per ulteriori informazioni suSHAP, consulta Benvenuto nella SHAP documentazione.

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

Carica il set di dati del censimento per adulti utilizzando SHAP

Utilizzando la SHAP libreria, importate 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 SHAP libreria, installatela eseguendo il seguente comando: conda

%conda install -c conda-forge shap

Se si utilizza JupyterLab, è necessario aggiornare manualmente il kernel al termine dell'installazione e degli aggiornamenti. Esegui lo IPython script seguente per spegnere 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
L'esempio di set di dati di addestramento.
validation
Il set di dati di convalida di esempio.
test
Il set di dati di test di esempio.

Converti i set di dati di addestramento e convalida in file CSV

Converti gli oggetti train e validation dataframe in file in modo che corrispondano al formato del CSV 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' SageMakeristanza ottimizzata per il calcolo su Amazon per la formazione. EC2

Il codice seguente configura il bucket S3 predefinito URI 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 CSV file sono stati caricati correttamente nel bucket S3.

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

Dovrebbe essere restituito il seguente output:

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