Treinamento e teste de um classificador é uma rotina muito comum para cientistas de dados, nesse artigo vamos discutir como fazer isso usando python.
Imagine que você possui uma base de dados que você quer utilizar como fonte de informação para o treinamento de um classificador. Ao realizar o treinamento, você pode usar o mesmo conjunto de dados para testá-lo, porém, o resultado será enviesado, porque os algoritmos que constroem modelos (árvores de decisão) utilizam probabilidade para calcular qual seria a melhor classificação para uma nova instância. Se as instâncias que estão sendo avaliadas já estão presentes no dataset, o algoritmo já entende qual é a classificação mais adequada para aquele caso.
Uma solução bastante conhecida para esse problema é criar um script que treina um classificador e utiliza a mesma base de dados testar seu classificador. Para isso, pacotes como o SKLearn, disponibilizam as ferramentas de divisão da base de dados de treino e teste.
Exemplo de divisão de dataset em treinamento e teste
O primeiro passo é importar as bibliotecas e ferramentas necessárias:
import numpy as np
from sklearn.model_selection import train_test_split
Em seguida, podemos criar um novo conjunto de dados de exemplo:
X, y = np.arange(10).reshape((5, 2)), range(5)
Nesse exemplo, a variável X contém o array:
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
A variável y contém uma lista de 0 até 4:
[0, 1, 2, 3, 4]
Por fim, vamos dividir esse conjunto de dados em duas partes: treino e teste. Sendo assim, as variáveis de treino e de teste serão X_train e y_train | X_test e y_test.
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42)
Por fim, as variáveis contém:
X_train:
array([[4, 5],
[0, 1],
[6, 7]])
X_test:
array([[2, 3],
[8, 9]])
y_train:
[2, 0, 3]
y_test:
[1, 4]
Após essa divisão você poderá utilizar as variáveis X_train/y_train para treinar seu classificador. As variáveis X_test/y_test serão utilizadas para testar a acurácia, precisão e recall do seu classificador em realizar essas predições.