Oi, Mariana!
O erro está acontecendo porque, na primeira linha de código, você sobrescreveu as variáveis x
e y
com os 85% dos dados restantes, só que de forma não sincronizada.
Vamos olhar com mais cuidado:
X, X_teste, y, y_teste = train_test_split(x, y, test_size = 0.15, stratify = y, random_state = 5)
Aqui você atribuiu novos valores para X
e y
, mas as variáveis x
e y
originais já estavam com nomes minúsculos. O problema acontece porque você misturou letras maiúsculas e minúsculas: usou X
e X_teste
, mas a variável x
original ainda existe e não foi atualizada. Ou seja, ao rodar a próxima linha:
X_treino, X_val, y_treino, y_val = train_test_split(x, y, stratify = y, random_state = 5)
Ela está tentando dividir o x
original (com 1268 linhas) com o y
reduzido (com 1077 linhas), o que gera o erro de tamanhos inconsistentes.
Como resolver?
Use sempre os mesmos nomes de variáveis ou então mantenha o x
e y
originais intactos e crie novos nomes para os conjuntos:
# Primeira divisão: separa 15% dos dados para teste
x_treino_val, x_teste, y_treino_val, y_teste = train_test_split(x, y, test_size=0.15, stratify=y, random_state=5)
# Segunda divisão: divide os 85% restantes entre treino e validação
x_treino, x_val, y_treino, y_val = train_test_split(x_treino_val, y_treino_val, test_size=0.25, stratify=y_treino_val, random_state=5)
Assim, você evita confusão com nomes de variáveis e garante que os dados estão sempre sincronizados.
Abraços e bons estudos!