Avaliando o Modelo
Ao construir um modelo preditivo, é fundamental determinar quão bem ele desempenha antes de utilizá-lo para previsões reais.
A avaliação do modelo mede o quão precisamente o modelo faz previsões. O método .score()
fornece essa avaliação.
Avaliar o desempenho no conjunto de treinamento é enganoso, pois o modelo tende a apresentar melhores resultados em dados já conhecidos. Para obter uma medida realista, a avaliação deve ser feita em dados não vistos.
Em termos formais, o objetivo é criar um modelo que generalize bem.
Generalização é a capacidade do modelo de atuar de forma eficaz em novos dados, não vistos anteriormente, além dos dados nos quais foi treinado. Mede o quão precisamente as previsões de um modelo podem ser aplicadas a cenários do mundo real fora do conjunto de treinamento.
Isso pode ser alcançado ao dividir aleatoriamente o conjunto de dados em duas partes: um conjunto de treinamento para ajustar o modelo e um conjunto de teste para avaliação.
Treine o modelo usando o conjunto de treinamento e, em seguida, avalie-o no conjunto de teste:
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
Para criar uma divisão aleatória dos dados, utilize a função train_test_split()
do módulo sklearn.model_selection
.
Normalmente, o tamanho do conjunto de teste depende do conjunto de dados: 25–40% para conjuntos pequenos, 10–30% para conjuntos médios e menos de 10% para conjuntos grandes.
Neste exemplo, com apenas 342 instâncias (um conjunto pequeno), aloque 33% para o conjunto de teste:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Aqui, X_train
e y_train
representam o conjunto de treinamento, enquanto X_test
e y_test
representam o conjunto de teste.
123456789101112131415import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
O modelo agora é treinado com o conjunto de treinamento usando .fit(X_train, y_train)
e avaliado com o conjunto de teste usando .score(X_test, y_test)
.
Como o train_test_split()
divide os dados aleatoriamente, os conjuntos de treino e teste diferem a cada execução, o que leva a pontuações variadas. Com um conjunto de dados maior, essas pontuações se tornam mais estáveis.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain why evaluating on the training set is misleading?
How does the random split affect model performance?
What does the `.score()` method actually measure?
Awesome!
Completion rate improved to 3.13
Avaliando o Modelo
Deslize para mostrar o menu
Ao construir um modelo preditivo, é fundamental determinar quão bem ele desempenha antes de utilizá-lo para previsões reais.
A avaliação do modelo mede o quão precisamente o modelo faz previsões. O método .score()
fornece essa avaliação.
Avaliar o desempenho no conjunto de treinamento é enganoso, pois o modelo tende a apresentar melhores resultados em dados já conhecidos. Para obter uma medida realista, a avaliação deve ser feita em dados não vistos.
Em termos formais, o objetivo é criar um modelo que generalize bem.
Generalização é a capacidade do modelo de atuar de forma eficaz em novos dados, não vistos anteriormente, além dos dados nos quais foi treinado. Mede o quão precisamente as previsões de um modelo podem ser aplicadas a cenários do mundo real fora do conjunto de treinamento.
Isso pode ser alcançado ao dividir aleatoriamente o conjunto de dados em duas partes: um conjunto de treinamento para ajustar o modelo e um conjunto de teste para avaliação.
Treine o modelo usando o conjunto de treinamento e, em seguida, avalie-o no conjunto de teste:
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
Para criar uma divisão aleatória dos dados, utilize a função train_test_split()
do módulo sklearn.model_selection
.
Normalmente, o tamanho do conjunto de teste depende do conjunto de dados: 25–40% para conjuntos pequenos, 10–30% para conjuntos médios e menos de 10% para conjuntos grandes.
Neste exemplo, com apenas 342 instâncias (um conjunto pequeno), aloque 33% para o conjunto de teste:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Aqui, X_train
e y_train
representam o conjunto de treinamento, enquanto X_test
e y_test
representam o conjunto de teste.
123456789101112131415import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
O modelo agora é treinado com o conjunto de treinamento usando .fit(X_train, y_train)
e avaliado com o conjunto de teste usando .score(X_test, y_test)
.
Como o train_test_split()
divide os dados aleatoriamente, os conjuntos de treino e teste diferem a cada execução, o que leva a pontuações variadas. Com um conjunto de dados maior, essas pontuações se tornam mais estáveis.
Obrigado pelo seu feedback!