7. Pré-processamento dos Dados
O pré-processamento é uma etapa fundamental para garantir que o modelo KNN funcione corretamente e produza resultados confiáveis. O tratamento de valores ausentes evita que dados incompletos prejudiquem a análise. A codificação transforma variáveis categóricas em valores numéricos, tornando-as compatíveis com o algoritmo. Já a normalização das variáveis é essencial porque o KNN é sensível à escala dos dados: variáveis com valores maiores podem dominar a classificação se não forem padronizadas.
Essas etapas aumentam a qualidade das previsões, tornando os resultados mais interpretáveis e robustos.
# Exemplo de tratamento de valores ausentes
df = df.dropna()
# Codificação de variáveis categóricas
from sklearn.preprocessing import LabelEncoder
cat_cols = ['gender', 'race/ethnicity', 'parental level of education', 'lunch', 'test preparation course']
le = LabelEncoder()
for col in cat_cols:
df[col] = le.fit_transform(df[col])
# Criar coluna alvo binária para classificação: passed (math score >= 60)
df['passed'] = (df['math score'] >= 60).astype(int)
# Selecionar features (exceto notas) e target
X = df.drop(['math score', 'reading score', 'writing score', 'passed'], axis=1)
y = df['passed']
# Normalização das features
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
| gender | race/ethnicity | parental level of education | lunch | test preparation course | math score | reading score | writing score | passed |
|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 1 | 0 | 72 | 72 | 74 | 1 |
| 1 | 2 | 3 | 1 | 1 | 69 | 90 | 88 | 1 |
| 0 | 1 | 1 | 1 | 0 | 90 | 95 | 93 | 1 |
| 0 | 2 | 3 | 1 | 1 | 47 | 57 | 44 | 0 |
| 1 | 1 | 0 | 0 | 0 | 76 | 78 | 75 | 1 |