article
4. O Processo KDD (Descoberta de Conhecimento)
O KDD (Knowledge Discovery in Databases) é o processo sistemático de identificar padrões válidos, novos e útils em grandes volumes de dados. Ele antecede e engloba a etapa de mineração de dados (Data Mining) — onde os algoritmos de ML são de fato aplicados.
Etapas do processo KDD
| Etapa | Descrição |
|---|---|
| 1. Limpeza | Remoção de ruídos, inconsistências e valores inválidos. |
| 2. Integração | Combinação de múltiplas fontes de dados. |
| 3. Seleção | Escolha dos atributos relevantes para a análise. |
| 4. Transformação | Conversão dos dados para formatos adequados (ex.: categórico → numérico, escalonamento). |
| 5. Mineração | Aplicação dos algoritmos para extrair padrões. |
| 6. Avaliação | Interpretação dos padrões encontrados. |
| 7. Apresentação | Exibição do conhecimento ao usuário final. |
Na prática da disciplina, as etapas 1 a 4 são executadas no pré-processamento; a divisão treino/teste e o salvamento em .pkl preparam os dados para as etapas seguintes.
Base de exemplo: credit_data
A base credit_data.csv contém informações de clientes bancários. O objetivo é prever se haverá inadimplência (default). Antes de qualquer algoritmo, é necessário:
- Explorar os dados com
describe(), gráficos e contagens. - Tratar idades negativas (inconsistência) e valores nulos.
- Separar atributos previsores (X) da classe (Y).
- Escalonar os atributos numéricos com
StandardScaler. - Dividir em treino e teste e salvar com
pickle.
Talk is cheap, show me the code:
Base utilizada nesta aula (disponível no Google Drive): credit_data.csv
ROTEIRO PARA A AULA - PRÉ-PROCESSAMENTO
1 - Importar as bibliotecas
#biblioteca para gerar gráficos dinâmicos
!pip install plotly --upgrade
#pandas é uma biblioteca que trabalha com a importação de arquivos .csv
import pandas as pd
#numpy é uma biblioteca para a realização de operações em arrays
import numpy as np
#seaborn é uma biblioteca para vizualização de gráficos
import seaborn as sb
#matplotlib é também uma biblioteca para a geração de gráficos
import matplotlib.pyplot as plt
import plotly.express as px
2 - Importar o arquivo credit_data.csv (Colocarno drive - pasta colab Notebooks)
base_credito = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/credit_data.csv') # coloca todo o arquivo na variável "base_credito"
base_credito.describe() # descreve uma visão geral da tabela
3 - Tratamento de valores inconsistentes
base_credito.loc[base_credito['age'] < 0] # a função loc do pandas faz a localização de algum registro. No caso, de registros da coluna 'age' menores que zero
#QuartaForma
base_credito3.loc[base_credito['age'] < 0]
base_credito.mean() #retorna a média
base_credito['age'][base_credito['age'] >= 0].mean() # retorna apenas aqueles com idade maior ou igual a zero
base_credito.loc[base_credito['age'] < 0, 'age'] = 40.92 - joga o valor 40.92 para todas as idades com idade negativa
base_credito.loc[base_credito['age'] < 0]
4 - Tratamento de valores ausentes
base_credito.isnull().sum()
base_credito.loc[pd.isnull(base_credito['age'])] #mostra quais linhas tem idade nula
base_credito['age'].fillna(base_credito['age'].mean(), inplace = True)
5 - Divisão entre atributos previsores (X) e classe (Y)
X_credito = base_credito.iloc[:, 1:4].values #iloc localiza linhas e colunas
Y_credito = base_credito.iloc[:, 4].values
6 - Escalonamento dos atributos
X_credito[:, 0].min(), X_credito[:, 1].min(), X_credito[:, 2].min()
X_credito[:, 0].max(), X_credito[:, 1].max(), X_credito[:, 2].max()
from sklearn.preprocessing import StandardScaler #classe que cria a padronização
scaler_credit = StandardScaler()
X_credito = scaler_credit.fit_transform(X_credito)
7 - Divisão de atributos treinamento e teste (sem escalonar)
from sklearn.model_selection import train_test_split
X_credito_treinamento, X_credito_teste, Y_credito_treinamento, Y_credito_teste = train_test_split(X_credito, Y_credito, test_size = 0.25, random_state = 0)
8 - Salvar os arquivos sem escalonar
import pickle #salvar variáveis em disco
with open('credito.pkl', mode = 'wb') as f:
pickle.dump([X_credito_treinamento,Y_credito_treinamento, X_credito_teste, Y_credito_teste], f)