

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Preparar conjuntos de dados
<a name="ex1-preprocess-data"></a>

Nesta etapa, você carrega o [conjunto de dados do Adult Census](https://archive.ics.uci.edu/ml/datasets/adult) em sua instância de notebook usando a biblioteca SHAP (SHapley Additive Explanations), analisa o conjunto de dados, o transforma e o carrega no Amazon S3. O SHAP é uma abordagem teórica dos jogos para explicar o resultado de qualquer modelo de machine learning. Para obter mais informações sobre o SHAP, consulte a [documentação de boas-vindas ao SHAP](https://shap.readthedocs.io/en/latest/).

Para executar o exemplo a seguir, cole o código de amostra em uma célula na sua instância de caderno.

## Carregar conjunto de dados do censo de adultos usando SHAP
<a name="ex1-preprocess-data-pull-data"></a>

Usando a biblioteca SHAP, importe o conjunto de dados do Censo de Adultos conforme mostrado a seguir:

```
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 o kernel atual do Jupyter não tiver a biblioteca SHAP, instale-a executando o seguinte comando `conda`:  

```
%conda install -c conda-forge shap
```
Se estiver usando JupyterLab, você deve atualizar manualmente o kernel após a conclusão da instalação e das atualizações. Execute o IPython script a seguir para desligar o kernel (o kernel será reiniciado automaticamente):  

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

O objeto de lista `feature_names` deve retornar a seguinte lista de atributos: 

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

**dica**  
Se você está começando com dados não rotulados, você pode usar o Amazon SageMaker Ground Truth para criar um fluxo de trabalho de rotulagem de dados em minutos. Para saber mais, consulte [Dados de rótulos](https://docs.aws.amazon.com/sagemaker/latest/dg/data-label.html). 

## Visão geral do conjunto de dados
<a name="ex1-preprocess-data-inspect"></a>

Execute o script a seguir para exibir a visão geral estatística do conjunto de dados e os histogramas dos atributos numéricos.

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

![\[Visão geral do conjunto de dados do Censo de Adultos.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/get-started-ni/gs-ni-prepare-data-1.png)


**dica**  
Se você quiser usar um conjunto de dados que precisa ser limpo e transformado, você pode simplificar e agilizar o pré-processamento de dados e a engenharia de recursos usando o Amazon SageMaker Data Wrangler. Para saber mais, consulte [Preparar dados de ML com o Amazon SageMaker Data Wrangler](https://docs.aws.amazon.com/sagemaker/latest/dg/data-wrangler.html).

## Divida o conjunto de dados em treinamento, validação e teste
<a name="ex1-preprocess-data-transform"></a>

Usando o Sklearn, divida o conjunto de dados em um conjunto de treinamento e um conjunto de testes. O conjunto de treinamento é usado para treinar o modelo, enquanto o conjunto de teste é usado para avaliar o desempenho do modelo final treinado. O conjunto de dados é classificado aleatoriamente com a semente aleatória fixa: 80% do conjunto de dados para o conjunto de treinamento e 20% para um conjunto de teste.

```
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]
```

Divida o conjunto de treinamento para separar um conjunto de validação. O conjunto de validação é usado para avaliar o desempenho do modelo treinado enquanto ajusta os hiperparâmetros do modelo. 75% do conjunto de treinamento se torna o conjunto de treinamento final e o restante é o conjunto de validação.

```
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]
```

Usando o pacote pandas, alinhe explicitamente cada conjunto de dados concatenando os atributos numéricos com os rótulos verdadeiros.

```
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)
```

Verifique se o conjunto de dados está dividido e estruturado conforme o esperado:

```
train
```

![\[O conjunto de dados de treinamento de exemplo.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/get-started-ni/gs-ni-prepare-data-2-train.png)


```
validation
```

![\[O conjunto de dados de validação.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/get-started-ni/gs-ni-prepare-data-2-validation.png)


```
test
```

![\[O conjunto de dados de teste de exemplo.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/get-started-ni/gs-ni-prepare-data-2-test.png)


## Converter os conjuntos de dados de treinamento e validação em arquivos CSV
<a name="ex1-preprocess-data-transform-2"></a>

Converta os objetos `train` e o `validation` dataframe em arquivos CSV para corresponder ao formato do arquivo de entrada do 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)
```

## Carregar os conjuntos de dados no Amazon S3
<a name="ex1-preprocess-data-transform-4"></a>

Usando a SageMaker IA e o Boto3, faça o upload dos conjuntos de dados de treinamento e validação para o bucket padrão do Amazon S3. Os conjuntos de dados no bucket do S3 serão usados por uma instância otimizada para computação no SageMaker Amazon EC2 para treinamento. 

O código a seguir configura o URI padrão do bucket do S3 para sua sessão atual de SageMaker IA, cria uma nova `demo-sagemaker-xgboost-adult-income-prediction` pasta e carrega os conjuntos de dados de treinamento e validação na subpasta. `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')
```

Execute o seguinte AWS CLI para verificar se os arquivos CSV foram carregados com sucesso no bucket do S3.

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

Essa saída deve retornar o seguinte resultado:

![\[Saída do comando da CLI para verificar os conjuntos de dados no bucket do S3.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/get-started-ni/gs-ni-prepare-data-3.png)
