Olá!
Para este desafio, tentei fugir um pouco de árvores e decidi pelo KNeighborsClassifier. Como ele mexe com distâncias, apliquei uma normalização aos dados.
Ainda estou aprendendo. Por favor, seria possível avaliar se fiz os passos certos? Segue meu código:
# Using only train dataset to fit normalization (avoid data leakage)
from sklearn.preprocessing import MinMaxScaler
normalize = MinMaxScaler()
X_train_norm = normalize.fit_transform(X_train)
X_val_norm = normalize.transform(X_val)
# Encoding target variable
from sklearn.preprocessing import LabelEncoder
lbl_enc = LabelEncoder()
y_train_encoded = lbl_enc.fit_transform(y_train)
y_val_encoded = lbl_enc.transform(y_val)
# Training and checking accuracy
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier()
neigh.fit(X_train_norm, y_train_encoded)
print(f'Acurácia do treino: {neigh.score(X_train_norm, y_train_encoded)}')
print(f'Acurácia da validação: {neigh.score(X_val_norm, y_val_encoded)}')
Cheguei nos seguintes resultados:
Acurácia do treino: 0.7606382978723404
Acurácia da validação: 0.674468085106383
Obrigado!