# Criar features derivadas
df['idade_categoria'] = pd.cut(df['idade'], bins=[0, 30, 45, 60, 100], labels=['Jovem', 'Adulto', 'Meia-Idade', 'Idoso'])
df['tempo_cliente_categoria'] = pd.cut(df['tempo_cliente'], bins=[0, 12, 24, 60], labels=['Novo', 'Intermediário', 'Antigo'])
df['saldo_medio_log'] = np.log1p(df['saldo_medio'])
# Encoding de variáveis categóricas
df = pd.get_dummies(df, columns=['genero', 'idade_categoria', 'tempo_cliente_categoria'], drop_first=True)
# Features selecionadas
features = ['idade', 'tempo_cliente', 'saldo_medio', 'num_produtos', 'saldo_medio_log']
features.extend([col for col in df.columns if col.startswith('genero_') or col.startswith('idade_') or col.startswith('tempo_')])
print(f"Features selecionadas: {len(features)}")
print(features)