Preparacao de Dados com IA usando o Dataset Builder
Introducao
A preparacao de dados e a fase que mais consome tempo em qualquer projeto de machine learning. Pesquisas da industria reportam consistentemente que cientistas de dados dedicam entre 60% e 80% do seu tempo limpando, transformando e engenhando features antes que um unico modelo seja treinado. O trabalho e tedioso, propenso a erros e frequentemente se repete entre projetos com apenas variacoes menores.
O Dataset Builder do CorePlexML reimagina esse processo como uma conversa. Em vez de navegar por um assistente rigido passo a passo ou escrever scripts ad-hoc de pandas, voce descreve o que precisa em linguagem natural e o Builder gera, executa e valida o codigo de transformacao por voce. O LLM subjacente compreende padroes de preparacao de dados e traduz sua intencao em Python executavel. Cada script gerado e exibido para total transparencia.
Como Funciona o Dataset Builder
O Dataset Builder e um agente conversacional multi-passo impulsionado por um LLM. Quando voce inicia uma nova sessao, o Builder perfila seus dados e o guia atraves de um pipeline estruturado: perfilamento, limpeza, gestao de colunas, engenharia de features e exportacao. Em cada passo, o Builder formula perguntas especificas sobre seus dados e preferencias, gera um script de transformacao em Python baseado nas suas respostas, o executa e mostra os resultados.
A decisao arquitetural chave e que o Builder utiliza perguntas predefinidas em cada passo. No entanto, suas respostas sao interpretadas pelo LLM por meio de classificacao semantica de intencao, permitindo que voce responda naturalmente.
Passo a Passo
Vamos trabalhar com a preparacao de um dataset de churn de clientes. O CSV bruto tem 7.043 linhas com colunas incluindo customerID, gender, SeniorCitizen, tenure, MonthlyCharges, TotalCharges e Churn.
Passo 1: Upload e Perfilamento
Apos carregar o CSV, o Builder perfila automaticamente cada coluna. Voce vera um resumo como:
- 7.043 linhas, 21 colunas detectadas
- Tipos de coluna: 16 categoricas, 4 numericas, 1 identificador
- Valores ausentes: TotalCharges tem 11 vazios (0.16%)
- Contagens de valores unicos: customerID e unico (provavelmente um identificador), gender tem 2 valores, Contract tem 3
Passo 2: Limpeza
O Builder consulta sobre suas preferencias de limpeza:
Builder: "Encontrei 11 valores ausentes em TotalCharges (0.16%). Como voce gostaria de tratar os valores ausentes?"
Voce: "Use a mediana para TotalCharges, ja que e uma coluna monetaria e pode ter outliers."
O Builder gera um script que converte TotalCharges para numerico, imputa os 11 valores ausentes com a mediana da coluna e valida que restam zero valores ausentes.
Passo 3: Remocao de Colunas
Builder: "Identifiquei as seguintes colunas que podem nao ser uteis para modelagem: customerID (identificador unico, 7043 valores distintos). Gostaria de remover alguma coluna?"
Voce: "Remova customerID. E apenas um identificador de linha sem valor preditivo."
Este passo e critico para evitar vazamento de dados (data leakage). Se uma coluna contem informacao que nao estaria disponivel no momento da predicao, inclui-la produzira metricas artificialmente infladas durante o treinamento.
Passo 4: Engenharia de Features
Builder: "Vejo varias colunas categoricas. Gostaria de codifica-las?"
Voce: "Aplique one-hot encoding nas categoricas de baixa cardinalidade como gender, Partner, Dependents e Contract. Use label encoding para InternetService pois tem natureza ordinal."
O Builder gera um script que aplica pd.get_dummies() para os alvos de one-hot e LabelEncoder para os ordinais.
Passo 5: Revisao e Exportacao
Apos todas as transformacoes, o Builder apresenta um resumo:
- Linhas: 7.043 (sem mudancas)
- Colunas: 21 originais, 32 apos codificacao, 31 apos remover customerID
- Valores ausentes: 0
- Transformacoes aplicadas: imputacao por mediana, one-hot encoding (6 colunas), label encoding (1 coluna), escalamento padrao (3 colunas)
# The Builder generates and executes scripts like this:
import pandas as pd
from sklearn.preprocessing import StandardScaler, LabelEncoder
# Convert TotalCharges to numeric, coerce errors to NaN
df["TotalCharges"] = pd.to_numeric(df["TotalCharges"], errors="coerce")
# Impute missing values with median
df["TotalCharges"].fillna(df["TotalCharges"].median(), inplace=True)
# Drop identifier column
df.drop(columns=["customerID"], inplace=True)
# One-hot encode categorical columns
df = pd.get_dummies(df, columns=["gender", "Partner", "Dependents",
"PhoneService", "Contract",
"PaymentMethod"])
# Label encode ordinal column
le = LabelEncoder()
df["InternetService"] = le.fit_transform(df["InternetService"])
# Standard scale numeric columns
scaler = StandardScaler()
df[["tenure", "MonthlyCharges", "TotalCharges"]] = scaler.fit_transform(
df[["tenure", "MonthlyCharges", "TotalCharges"]]
)
Integracao SDK
from coreplexml import CorePlexMLClient
client = CorePlexMLClient(
base_url="https://api.coreplexml.io",
api_key="sk_your_api_key"
)
# Start a builder session
session = client.builder.create_session(
dataset_version_id="dv_abc123"
)
# Send a message to the builder
response = client.builder.chat(
session_id=session["session_id"],
message="Impute missing values with median for all numeric columns"
)
print(response["reply"])
print(response["script"]) # The generated Python code
# Export the result
export = client.builder.export(session_id=session["session_id"])
print(f"New version: {export['dataset_version_id']}")
Padroes Comuns de Limpeza
Valores Ausentes Numericos
Para colunas numericas, a imputacao por mediana e a opcao mais segura por padrao. E robusta a outliers, diferentemente da imputacao por media que pode ser distorcida por valores extremos.
Valores Ausentes Categoricos
A imputacao por moda (substituicao pela categoria mais frequente) funciona bem para colunas de baixa cardinalidade. Para maior cardinalidade, considere criar uma categoria explicita "Unknown".
Categoricas de Alta Cardinalidade
Colunas com centenas ou milhares de valores unicos nao devem receber one-hot encoding diretamente. O Builder pode aplicar frequency encoding ou target encoding, ambas produzindo uma unica coluna numerica em vez de centenas de colunas binarias esparsas.
Extracao de Features de Datas
Colunas de data contem informacao temporal rica comprimida em um unico valor. O Builder extrai multiplas features: ano, mes, dia da semana e tempo decorrido desde uma data de referencia.
Dicas para Melhores Resultados
Seja especifico com suas instrucoes. Em vez de dizer "limpe os dados", diga "impute os valores ausentes da coluna Age com a mediana e remova as linhas onde Income e negativo."
Revise os scripts gerados. O Builder mostra cada linha de codigo que executa. Tome um momento para verificar a logica.
Use "force" para casos extremos. Se uma transformacao reduz seu dataset a zero linhas, o Builder bloqueara a operacao e pedira confirmacao. Se genuinamente deseja continuar, digite "force".
Itere em passos pequenos. Em vez de descrever todas as transformacoes em uma unica mensagem, trabalhe cada passo individualmente. Isso permite inspecionar resultados intermediarios.
Verifique a contagem de colunas apos a codificacao. O one-hot encoding pode aumentar dramaticamente o numero de colunas. Monitore as contagens e considere codificacoes alternativas para features de alta cardinalidade.
O Dataset Builder transforma horas de trabalho manual de preparacao de dados em minutos de conversa guiada. Combinado com o sistema de versionamento do CorePlexML, cada transformacao fica registrada, e reproduzivel e auditavel, proporcionando rastreabilidade completa desde o upload do arquivo bruto ate o conjunto de features pronto para ML.