Avaliação do desempenho do modelo

Aprendizado Supervisionado com o scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Avaliação do desempenho do modelo

  • Na classificação, a precisão é uma métrica comumente usada

  • Acurácia:

previsões corretas dividido pelo total de observações

Aprendizado Supervisionado com o scikit-learn

Avaliação do desempenho do modelo

  • Como medimos a precisão?

  • Seria possível calcular a precisão com os dados usados para ajustar o classificador

  • NÃO indica a capacidade de generalização

Aprendizado Supervisionado com o scikit-learn

Cálculo da precisão

dados sendo divididos em um conjunto de treinamento e um conjunto de teste

Aprendizado Supervisionado com o scikit-learn

Cálculo da precisão

ajuste de um classificador ao conjunto de treinamento

Aprendizado Supervisionado com o scikit-learn

Cálculo da precisão

calcule a precisão usando o conjunto de teste

Aprendizado Supervisionado com o scikit-learn

Divisão em treinamento/teste

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=21, stratify=y)
knn = KNeighborsClassifier(n_neighbors=6)
knn.fit(X_train, y_train)
print(knn.score(X_test, y_test))
0.8800599700149925
Aprendizado Supervisionado com o scikit-learn

Complexidade do modelo

  • k maior = modelo menos complexo = pode causar subajuste

  • k menor = modelo mais complexo = pode causar sobreajuste

Gráficos de dispersão que mostram um limite de decisão do KNN para k=1, k=9 e k=18

Aprendizado Supervisionado com o scikit-learn

Complexidade do modelo e sobreajuste/subajuste

train_accuracies = {}
test_accuracies = {}
neighbors = np.arange(1, 26)

for neighbor in neighbors:
knn = KNeighborsClassifier(n_neighbors=neighbor)
knn.fit(X_train, y_train)
train_accuracies[neighbor] = knn.score(X_train, y_train) test_accuracies[neighbor] = knn.score(X_test, y_test)
Aprendizado Supervisionado com o scikit-learn

Gráficos dos resultados

plt.figure(figsize=(8, 6))
plt.title("KNN: Varying Number of Neighbors")
plt.plot(neighbors, train_accuracies.values(), label="Training Accuracy")
plt.plot(neighbors, test_accuracies.values(), label="Testing Accuracy")
plt.legend()
plt.xlabel("Number of Neighbors")
plt.ylabel("Accuracy")
plt.show()
Aprendizado Supervisionado com o scikit-learn

Curva de complexidade do modelo

Gráfico de linhas da precisão x número de vizinhos, em que a precisão do conjunto de treinamento e teste diminui à medida que k aumenta

Aprendizado Supervisionado com o scikit-learn

Curva de complexidade do modelo

seta no gráfico de linhas indicando que 13 vizinhos geram a melhor precisão do conjunto de teste

Aprendizado Supervisionado com o scikit-learn

Vamos praticar!

Aprendizado Supervisionado com o scikit-learn

Preparing Video For Download...