Pular para o conteúdo

Como utilizar o train_test_split para dividir os dados de treinamento e teste?

[

Divida seu Dataset com train_test_split do scikit-learn

Uma das principais etapas do aprendizado de máquina supervisionado é a avaliação e validação do modelo. Ao avaliar o desempenho preditivo do seu modelo, é essencial que o processo seja imparcial. Usando a função train_test_split() da biblioteca de ciência de dados scikit-learn, você pode dividir seu conjunto de dados em subconjuntos que minimizam o potencial de viés no processo de avaliação e validação.

Neste tutorial, você irá aprender:

  • Por que é necessário dividir o conjunto de dados no aprendizado de máquina supervisionado.
  • Quais subconjuntos do conjunto de dados você precisa para uma avaliação imparcial do seu modelo.
  • Como usar a função train_test_split() para dividir seus dados.
  • Como combinar o train_test_split() com métodos de predição.

Além disso, você receberá informações sobre ferramentas relacionadas da biblioteca sklearn.model_selection.

A Importância da Divisão de Dados

O aprendizado de máquina supervisionado envolve a criação de modelos que mapeiam precisamente as entradas fornecidas para as saídas desejadas. Como medir a precisão do seu modelo depende do tipo de problema que você está tentando resolver. Na análise de regressão, você geralmente usa o coeficiente de determinação, erro quadrático médio, erro médio absoluto ou quantidades semelhantes. Para problemas de classificação, você geralmente aplica a precisão, recall, pontuação F1 e indicadores relacionados.

Os valores numéricos aceitáveis que medem a precisão variam de campo para campo. Você pode encontrar explicações detalhadas em recursos como Statistics By Jim, Quora e muitos outros.

Pré-requisitos para Usar o train_test_split()

Antes de começar a usar a função train_test_split(), você precisa ter instalado o pacote scikit-learn. Você pode instalá-lo usando o gerenciador de pacotes pip:

pip install scikit-learn

Aplicação do train_test_split()

Agora que você entende a importância da divisão de dados, é hora de aprender como aplicar a função train_test_split(). Esta função irá dividir o seu conjunto de dados em dois ou mais subconjuntos:

  • Conjunto de treinamento: usado para treinar o modelo.
  • Conjunto de teste: usado para avaliar o desempenho do modelo.

Aqui está um exemplo de como usar o train_test_split():

from sklearn.model_selection import train_test_split
# Dividindo os dados em conjuntos de treinamento e teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Neste exemplo, X representa as características do conjunto de dados e y representa os rótulos ou saídas esperadas. O parâmetro test_size define a proporção do conjunto de teste em relação ao conjunto de dados completo. No exemplo acima, 20% dos dados serão usados para teste. O parâmetro random_state garante a reprodutibilidade dos resultados.

Aprendizado de Máquina Supervisionado com train_test_split()

Agora que você sabe como usar o train_test_split() para dividir seus dados, você pode aplicá-lo em exemplos de aprendizado de máquina supervisionado. Aqui estão três exemplos práticos:

Exemplo Minimalista de Regressão Linear

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# Dividindo os dados em conjuntos de treinamento e teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Treinando o modelo de regressão linear
regression_model = LinearRegression()
regression_model.fit(X_train, y_train)
# Avaliando o modelo
score = regression_model.score(X_test, y_test)

Exemplo de Regressão

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# Dividindo os dados em conjuntos de treinamento e teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Treinando o modelo de regressão
regression_model = LinearRegression()
regression_model.fit(X_train, y_train)
# Prevendo os valores do conjunto de teste
y_pred = regression_model.predict(X_test)
# Avaliando o modelo
score = regression_model.score(X_test, y_test)

Exemplo de Classificação

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# Dividindo os dados em conjuntos de treinamento e teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Treinando o modelo de classificação
classification_model = LogisticRegression()
classification_model.fit(X_train, y_train)
# Prevendo as classes do conjunto de teste
y_pred = classification_model.predict(X_test)
# Avaliando o modelo
score = classification_model.score(X_test, y_test)

Outras Funcionalidades de Validação

A função train_test_split() também possui outros parâmetros que permitem realizar validações mais avançadas. Alguns exemplos incluem:

  • stratify: permite estratificar os dados durante a divisão, garantindo a representação adequada das classes em cada conjunto.
  • shuffle: permite embaralhar os dados antes da divisão, evitando qualquer ordem ou padrão nos conjuntos de treinamento e teste.

Consulte a documentação oficial do scikit-learn para obter mais informações sobre esses parâmetros e outras funcionalidades de validação disponíveis.

Conclusão

Dividir o conjunto de dados em conjuntos de treinamento e teste é uma etapa essencial no aprendizado de máquina supervisionado. A função train_test_split() do pacote scikit-learn facilita essa tarefa, permitindo que você divida seus dados de forma imparcial. Ao combinar a função train_test_split() com métodos de predição, você pode desenvolver e avaliar modelos de aprendizado de máquina supervisionado com facilidade.

Agora que você entende a importância da divisão de dados e como aplicar o train_test_split(), você está pronto para usar essa função em seus próprios projetos de aprendizado de máquina. Experimente e veja como a divisão adequada dos dados pode melhorar o desempenho do seu modelo.