Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Avaliando o Modelo | Modelagem
Introdução ao ML com Scikit-learn

bookAvaliando 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.

Note
Definição

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.

123456789101112131415
import 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))
copy

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.

question mark

Para obter uma divisão de treino-teste de 67%/33%, pegamos um terço das primeiras linhas como conjunto de teste e o restante como conjunto de treinamento. Essa afirmação está correta?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.13

bookAvaliando 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.

Note
Definição

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.

123456789101112131415
import 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))
copy

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.

question mark

Para obter uma divisão de treino-teste de 67%/33%, pegamos um terço das primeiras linhas como conjunto de teste e o restante como conjunto de treinamento. Essa afirmação está correta?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 3
some-alt