Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Dúvida na separação dos conjuntos de teste, validação e treino

Oi, pessoal! Alguém poderia me ajudar a entender como foi feita a separação dos dados de teste, treino e validação (no vídeo Validando o modelo)? Entendi que na primeira linha da célula foram separados 15% dos dados para teste. Mas não entendi o que foi feito na segunda linha. Os 85% restantes foram divididos entre treino e validação? E não usamos nenhum parâmetro na função train_test_split indicando qual proporção dos dados cada conjunto deve ter?

Já agradeço!

Um abraço

3 respostas
solução!

Oi, Mariana, tudo bem?

Na primeira linha, estamos separando 15% dos dados para o conjunto de teste. Ou seja, dos dados originais, 15% vão para x_teste e y_teste, enquanto os 85% restantes permanecem em x e y, que serão usados na próxima divisão (treino e validação).

Na segunda linha, dividimos esses 85% restantes entre treinamento e validação. Essa etapa é importante para ajustar e avaliar o desempenho do modelo ao longo do processo de desenvolvimento, sem utilizar os dados de teste, que devem ser reservados para a avaliação final.

A função train_test_split foi usada duas vezes:

  1. Primeira divisão – separa 15% dos dados para teste:

    x, x_teste, y, y_teste = train_test_split(x, y, test_size=0.15, stratify=y, random_state=5)
    
  2. Segunda divisão – divide os 85% restantes entre treino e validação:

    x_treino, x_val, y_treino, y_val = train_test_split(x, y, stratify=y, random_state=5)
    

Na segunda chamada da função, como não foi especificado o parâmetro test_size, ela usa o valor padrão (test_size=0.25). Compartilho a documentação onde tem essa informação. Assim, os dados remanescentes (85%) são divididos em:

ConjuntoCálculoPorcentagem dos dados originais
Validação25% de 85% → 0.25 × 0.8521,25%
Treinamento75% de 85% → 0.75 × 0.8563,75%

Portanto, ao final, temos aproximadamente 63,75% dos dados para treino, 21,25% para validação e 15% para teste.

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Muitíssimo obrigada, Monalisa!

Será que poderia me ajudar mais uma vez? Eu estou tentando fazer essa divisão em um projeto, mas está dando um erro na segunda linha de código. Quando rodo esta segunda linha de código, os valores de x e y estão diferentes entre si, porque 15% do y fora tirados na primeira linha de código, para formar o conjunto de teste. Então, como x e y ficaram com quantidades diferentes, a segunda linha não está rodando:


#Separando 15% dos dados para teste
X, X_teste, y, y_teste = train_test_split(x, y, test_size = 0.15, stratify = y, random_state = 5)

print(len(x), len(y)) 
1268 1077                    #antes de rodar a linha de código acima, tanto y quanto x tinham 1268 observações

#Dos 85% de dados que sobraram após a separação de 15% para teste, vamos fazer a seguinte divisão: 25% para validação e 75% para treino
X_treino, X_val, y_treino, y_val = train_test_split(x, y, stratify = y, random_state = 5)

ValueError: Found input variables with inconsistent numbers of samples: [1268, 1077]

Se puder me ajudar, agradeço!