Entendendo a importância da DIVISÃO.
Quando se trata de construir um modelo de machine learning, a qualidade dos dados é fundamental. Mas como garantir que seu modelo aprenda de forma eficaz a relação intrínseca dos dados existentes e generalize bem para novos dados?
Uma das respostas é a forma como o dataset é dividido
Imagine que você, Cientista de Dados, está treinando um modelo para identificar cães e gatos em imagens. Se você utilizar todas as imagens do seu dataset para treinar o modelo, ele pode se tornar muito “esperto” para os dados específicos que viu, mas pode ter dificuldades em classificar novas imagens que nunca viu antes, acarretando o fenômeno conhecido como overfiting.
Por que Dividir o Dataset (conjunto de dados)?
A divisão do conjunto de dados em um conjunto de treinamento e um conjunto de teste é uma prática comum em machine learning, com o intuito de mitigar o overfiting e avaliar o desempenho do modelo de forma imparcial.
Conjunto de Treinamento
Conjunto de Teste
É a parte do conjunto de dados que o modelo utiliza para aprender as relações entre as features (caracterpisticas) e o target (alvo ou resultado desejado).
É a parte do conjunto de dados que o modelo nunca viu durante o treinamento.
Como Fazer a Divisão?
Existem diversas técnicas para dividir o conjunto de dados, mas a mais comum é a divisão aleatória. Essa técnica garante que ambos os conjuntos sejam representativos do conjunto de dados original.
- Aleatoriedade: É fundamental que a divisão seja aleatória para evitar vieses na amostra.
- Proporção: A proporção mais comum é 80% para treinamento e 20% para teste, mas essa pode variar dependendo do tamanho do conjunto de dados e da complexidade do problema.
Automatizador
Abaixo, entrego um script que pode automatizar a tarefa de dividir o conjunto de dados em treino e teste. O script foi escrito em linguagem python.
#Bibliotecas necessárias import pandas as pd import sklearn from sklearn.model_selection import train_test_split #funcão automatizadora de divisão de dataset def divide_dataset(dataframe, coluna_target, test_size, random_state=42) """ Explicação da função: divide_dataset: Como o próprio nome diz, ela vai dividir o dataset Parâmetros da função: dataframe: O dataframe dos dados; coluna_target: A coluna alvo; test_size: a proporção da divisão do teste; random_state: Seed (semente) para geração de números aleatórios (42 é o padrão) Retorno: - X_train: Conjunto de treino para as variáveis independentes. - X_test: Conjunto de teste para as variáveis independentes. - y_train: Conjunto de treino para a variável alvo. - y_test: Conjunto de teste para a variável alvo. """ #Dados de entrada X = dataframe.drop(coluna_target, axis = 1) #Dados de saída y = data[coluna_target] #Divisão em treino e teste X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = test_size, random-state = random_state return X_train, X_test, y_train, y_test
Uma resposta para “Automatizar a divisão de treino e teste em um dataset”
[…] ajudar, no post “Automatizar a divisão de treino e teste em um dataset“ compartilho um scprit para a divisão do […]