Medir el rendimiento del modelo

Aprendizaje supervisado con scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Medir el rendimiento del modelo

  • En clasificación, se utiliza a menudo la métrica de la precisión.

  • Precisión:

predicciones correctas divididas por el total de observaciones

Aprendizaje supervisado con scikit-learn

Medir el rendimiento del modelo

  • ¿Cómo medimos la precisión?

  • Podría calcular la precisión de los datos utilizados para ajustar el clasificador

  • NO sería indicativo de la capacidad de generalización

Aprendizaje supervisado con scikit-learn

Precisión de cálculo

datos divididos en un conjunto de entrenamiento y un conjunto de prueba

Aprendizaje supervisado con scikit-learn

Precisión de cálculo

incluir un clasificador en el conjunto de entrenamiento

Aprendizaje supervisado con scikit-learn

Precisión de cálculo

calcular la precisión utilizando el conjunto de prueba

Aprendizaje supervisado con scikit-learn

Entrenamiento/prueba de la división

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
Aprendizaje supervisado con scikit-learn

Complejidad del modelo

  • k mayor = modelo menos complejo = puede provocar un ajuste insuficiente

  • k menor = modelo más complejo = puede llevar a un sobreajuste

los gráficos de dispersión muestran un límite de decisión KNN para k=1, k=9 y k=18

Aprendizaje supervisado con scikit-learn

Complejidad del modelo y sobreajuste o ajuste insuficiente

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)
Aprendizaje supervisado con scikit-learn

Representación gráfica de nuestros 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()
Aprendizaje supervisado con scikit-learn

Curva de complejidad del modelo

gráfico de líneas de la precisión frente al número de vecinos, donde tanto la precisión del conjunto de entrenamiento como la del conjunto de prueba disminuyen a medida que aumenta k

Aprendizaje supervisado con scikit-learn

Curva de complejidad del modelo

flecha en el gráfico de líneas que señala a 13 vecinos como los que producen la mejor precisión del conjunto de pruebas

Aprendizaje supervisado con scikit-learn

¡Vamos a practicar!

Aprendizaje supervisado con scikit-learn

Preparing Video For Download...