<jupyter_start><jupyter_text>Pré-processamento e Transformação  IntroduçãoVamos pré-processar, transformar e salvar os dados para a etapa de modelagem.  Os dados que usaremos estão em um arquivo chamado  `Orange_Telecom_Churn_Data.csv` disponível no  [GitHub repository](https://github.com/rosalvoneto/InteligenciaComputacional).  Questão 1* Importe os dados;* Examine as colunas.<jupyter_code># Importar os dados
import pandas as pd

churn_data = pd.read_csv('data/Orange_Telecom_Churn_Data.csv')

churn_data.head()<jupyter_output><empty_output><jupyter_text>Questão 2* Elimine as variáveis irrelevantes: 'phone_number', 'area_code', 'state'.<jupyter_code># Remove phone_number column

churn_data.drop(['phone_number', 'area_code', 'state'], inplace=True, axis=1)
churn_data.columns<jupyter_output><empty_output><jupyter_text>Questão 3* Separate os dados em dois: X_data (variáveis de entrada) e y_data (variável alvo `churned`);* Dividir os dados em treinamento e teste usando train_test_split do sklearn.model_selection: X_train, X_test, y_train, y_test<jupyter_code># Separate os dados: X_data e  y_data
y_data = churn_data.churned
X_data = churn_data.drop(['churned'], axis=1)

print(X_data.head())
print(y_data.head())

# Dividir os dados em treinamento e teste

from sklearn.model_selection import train_test_split
X_train, X_test = train_test_split(X_data, test_size=0.3)
y_train, y_test = train_test_split(y_data, test_size=0.3)<jupyter_output>account_length intl_plan voice_mail_plan  number_vmail_messages  \
0             128        no             yes                     25   
1             107        no             yes                     26   
2             137        no              no                      0   
3              84       yes              no                      0   
4              75       yes              no                      0   

   total_day_minutes  total_day_calls  total_day_charge  total_eve_minutes  \
0              265.1              110             45.07              197.4   
1              161.6              123             27.47              195.5   
2              243.4              114             41.38              121.2   
3              299.4               71             50.90               61.9   
4              166.7              113             28.34              148.3   

   total_eve_calls  total_eve_charge  total_night_minutes  total_night_calls  \
0               99            [...]<jupyter_text>Questão 4* Crie variáveis Dummies;* Converta a variável alvo em numérica.<jupyter_code># Dummies

X_train = pd.get_dummies(X_train, prefix_sep='_', drop_first=True)
X_test = pd.get_dummies(X_test, prefix_sep='_', drop_first=True)

X_train.head()
# Converter a variável alvo

y_train = y_train.astype(int)
y_test = y_test.astype(int)

y_train.head()<jupyter_output><empty_output><jupyter_text>Questão 5* Normalize X_train -> X_train_norm e X_test -> X_test_norm: use MinMaxScaler do sklearn.preprocessing;OBS: MinMaxScaler retorna um numpy.ndarray e não um DataFrame do pandas;* Atualize X_train e X_test com os dados normalizados.<jupyter_code># Normalizar

from sklearn.preprocessing import MinMaxScaler
import numpy as np

scaler = MinMaxScaler()

X_train_norm = scaler.fit_transform(X_train)
X_test_norm = scaler.fit_transform(X_test)

np.take(X_train_norm, range(3), axis=1)
# Atualizar X_train com os dados normalizado

X_train = pd.DataFrame(dict(zip(X_train.columns.values, X_train_norm.T)))
# Atualizar/Criar X_train com os dados normalizado
X_test = pd.DataFrame(dict(zip(X_test.columns.values, X_test_norm.T)))<jupyter_output><empty_output><jupyter_text>Questão 6* Examine os Dataframes;* Salve os quatro arquivos.<jupyter_code># Examinando X_train 

X_train.head()
# Examinando X_test

X_test.head()
# Salvando os dados em arquivos

X_train.to_csv('data/Orange_Telecom_Churn_Data_X_train.csv', index=False)
X_test.to_csv('data/Orange_Telecom_Churn_Data_X_test.csv', index=False)

y_train.to_csv('data/Orange_Telecom_Churn_Data_y_train.csv', index=False)
y_test.to_csv('data/Orange_Telecom_Churn_Data_y_test.csv', index=False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08222490931076179, 'fraction_numerical': 0.02902055622732769, 'mean_word_length': 2.976923076923077, 'pattern_counts': {'":': 0, '<': 24, '<?xml version=': 0, '>': 26, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 10, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '345294', 'license': 'MIT', 'n_tokens_mistral': 1527, 'n_tokens_neox': 1446, 'n_words': 311, 'path': 'preprocessing/Preprocessing.ipynb', 'repo_name': 'elaynelemos/ic', 'size': '4135'}