idade
É uma quantidade. Pode ser padronizada conforme o modelo.
24, 51, 36, 42PREPARAÇÃO DE DADOS · CODIFICAÇÃO
Modelos matemáticos precisam de números, mas cada transformação comunica uma estrutura. Ordinal Encoding preserva uma ordem verdadeira; One-Hot mantém categorias nominais separadas.
Existe ordem?essa é a primeira pergunta
Ordinal Encodingbaixo < médio < alto
One-Hot Encodinguma coluna indicadora por categoria
Verificar o modeloalguns aceitam categorias nativamente
01 · A TABELA ORIGINAL
Risco tem uma sequência legítima. Plano e cidade são apenas nomes de grupos. Portanto, não devem receber automaticamente a mesma codificação.
| cliente | idade | risco | plano | cidade | cancelou (y) |
|---|---|---|---|---|---|
| A | 24 | Baixo | Básico | Uberaba | Não |
| B | 51 | Alto | Premium | Franca | Sim |
| C | 36 | Médio | Básico | Uberlândia | Não |
| D | 42 | Alto | Essencial | Uberaba | Sim |
É uma quantidade. Pode ser padronizada conforme o modelo.
24, 51, 36, 42Baixo, médio e alto possuem ordem real.
baixo < médio < altoOs nomes identificam grupos, não níveis.
Uberaba ≠ “menor” que FrancaÉ a resposta y de uma classificação binária.
não=0 · sim=102 · ORDINAL ENCODING
Definimos conscientemente a sequência das categorias e substituímos cada nível por sua posição.
A relação de ordem já existe no domínio do problema.
A codificação preserva essa sequência para o algoritmo.
codificar(risco): Baixo → 0 · Médio → 1 · Alto → 2
Escolaridade, faixa de risco, tamanho P/M/G ou satisfação em níveis ordenados.
ordem definida pelo domínioCodificar cidades como Uberaba=0, Franca=1, Goiânia=2. Não existe ordem real.
cidade 2 não é maior que cidade 1Dados futuros podem trazer um nível não observado. Defina uma política para “desconhecido”.
unknown_value = -103 · ONE-HOT ENCODING
Cada categoria vira uma coluna binária. Assim, o código não afirma que uma cidade é maior ou mais próxima que outra.
| cidade original | cidade_Uberaba | cidade_Franca | cidade_Uberlândia |
|---|---|---|---|
| Uberaba | 1 | 0 | 0 |
| Franca | 0 | 1 | 0 |
| Uberlândia | 0 | 0 | 1 |
| Uberaba | 1 | 0 | 0 |
One-Hot(Uberaba) = [1, 0, 0] · One-Hot(Franca) = [0, 1, 0]
04 · TABELA PRONTA PARA O MODELO
| idade | risco_ord | plano_Básico | plano_Essencial | plano_Premium | cidade_Uberaba | cidade_Franca | cidade_Uberlândia | y |
|---|---|---|---|---|---|---|---|---|
| 24 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
| 51 | 2 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
| 36 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 42 | 2 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |
Leitura da primeira linha: cliente de 24 anos, risco baixo (0), plano Básico, cidade Uberaba e alvo “não cancelou” (0). As colunas indicadoras valem 1 somente quando a categoria está presente.
05 · OUTRAS CODIFICAÇÕES
Para exatamente duas categorias, uma única coluna pode ser suficiente.
sim=1 · não=0Substitui a categoria por sua frequência no treino. Economiza colunas, mas diferentes grupos podem ter a mesma frequência.
Uberaba → 0,42Usa uma estatística do alvo por categoria. Deve ser ajustado apenas no treino e dentro da validação cruzada.
alto risco de vazamentoRedes neurais podem aprender vetores densos para categorias ou tokens, especialmente com vocabulários grandes.
categoria → [0,18, −0,42, …]06 · QUAL CODIFICAÇÃO PARA CADA MODELO?
| Modelo | Nominal | Ordinal | Observação prática |
|---|---|---|---|
| Regressão linear / logística | One-Hot | Ordinal se a ordem for real | Um código nominal 0/1/2 inventaria uma relação linear. |
| SVM | One-Hot | Ordinal consciente | Também padronize as entradas numéricas; distância e margem são sensíveis à escala. |
| k-NN / k-means / LVQ / RBF | One-Hot com cautela | Ordinal consciente | A representação muda diretamente as distâncias. Escala é essencial. |
| Perceptron / ADALINE / MLP | One-Hot ou embedding | Ordinal consciente | Escala consistente geralmente favorece o treinamento. |
| Árvore / Random Forest no scikit-learn | Codificar | Ordinal pode ser útil | One-Hot evita ordem falsa; árvores podem lidar bem sem padronização. |
| CatBoost / LightGBM / boosting com suporte categórico | Preferir suporte nativo quando configurado | Depende da implementação | Não aplique One-Hot automaticamente antes de verificar a biblioteca. |
| Naive Bayes | One-Hot ou variante categórica | Depende da variante | Escolha Bernoulli, Multinomial, Categorical ou Gaussian conforme os dados. |
| Transformer | IDs de tokens + embeddings | Embeddings / atributos | O ID do token é índice de consulta, não uma medida ordinal. |
07 · NÃO CONFUNDA X E y
Transforma uma ou várias colunas categóricas de entrada X. A ordem deve ser especificada quando ela importa.
X[:, categoria] → númerosCria colunas indicadoras para as categorias das entradas X.
X[:, cidade] → [0,1,0]No scikit-learn, é destinado aos rótulos do alvo y, e não às colunas de entrada.
y: ["não","sim"] → [0,1]08 · PIPELINE REPRODUZÍVEL
# Exemplo conceitual com scikit-learn
numericas = ["idade"]
ordinais = ["risco"]
nominais = ["plano", "cidade"]
preparo = ColumnTransformer([
("num", StandardScaler(), numericas),
("ord", OrdinalEncoder(
categories=[["Baixo", "Médio", "Alto"]]
), ordinais),
("nom", OneHotEncoder(
handle_unknown="ignore"
), nominais)
])
pipeline = Pipeline([
("preparo", preparo),
("modelo", LogisticRegression())
])
# fit aprende transformações e modelo somente com o treino.
pipeline.fit(X_treino, y_treino)
# predict reutiliza exatamente as mesmas transformações.
previsoes = pipeline.predict(X_teste)