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

EtapaDescrição
1. LimpezaRemoção de ruídos, inconsistências e valores inválidos.
2. IntegraçãoCombinação de múltiplas fontes de dados.
3. SeleçãoEscolha dos atributos relevantes para a análise.
4. TransformaçãoConversão dos dados para formatos adequados (ex.: categórico → numérico, escalonamento).
5. MineraçãoAplicação dos algoritmos para extrair padrões.
6. AvaliaçãoInterpretação dos padrões encontrados.
7. ApresentaçãoExibiçã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)