Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Evaluación del modelo | Modelado
Introducción al Aprendizaje Automático con Python

Evaluación del modelo

Desliza para mostrar el menú

Al construir un modelo predictivo, es fundamental determinar qué tan bien funciona antes de utilizarlo para predicciones reales.

La evaluación del modelo mide cuán precisa es la capacidad del modelo para hacer predicciones. El método .score() proporciona esta evaluación.

Evaluar el rendimiento en el conjunto de entrenamiento puede ser engañoso, ya que el modelo probablemente tendrá un mejor desempeño con datos que ya ha visto. Para obtener una medida realista, la evaluación debe realizarse con datos no vistos.

En términos formales, el objetivo es crear un modelo que generalice bien.

Note
Definición

La generalización es la capacidad del modelo para desempeñarse eficazmente con datos nuevos y no vistos, más allá de los datos con los que fue entrenado. Mide cuán precisas pueden ser las predicciones del modelo cuando se aplican a escenarios del mundo real fuera del conjunto de entrenamiento.

Esto se puede lograr mediante la división aleatoria del conjunto de datos en dos partes: un conjunto de entrenamiento para ajustar el modelo y un conjunto de prueba para la evaluación.

TrainTestTable

Entrenamiento del modelo utilizando el conjunto de entrenamiento y evaluación en el conjunto de prueba:

model.fit(X_train, y_train)
print(model.score(X_test, y_test))

Para crear una división aleatoria de los datos, utilizar la función train_test_split() del módulo sklearn.model_selection.

train_test_split

Normalmente, el tamaño del conjunto de prueba depende del conjunto de datos: 25–40% para conjuntos pequeños, 10–30% para medianos y menos del 10% para conjuntos grandes.

En este ejemplo, con solo 342 instancias (un conjunto de datos pequeño), se asigna 33% al conjunto de prueba:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

Aquí, X_train y y_train representan el conjunto de entrenamiento, mientras que X_test y y_test representan el conjunto de prueba.

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))

El modelo ahora está entrenado con el conjunto de entrenamiento usando .fit(X_train, y_train) y evaluado con el conjunto de prueba usando .score(X_test, y_test).

Debido a que train_test_split() divide los datos aleatoriamente, los conjuntos de entrenamiento y prueba difieren en cada ejecución, lo que conduce a puntuaciones variables. Con un conjunto de datos más grande, estas puntuaciones serían más estables.

question mark

Para lograr una división de entrenamiento-prueba del 67%/33%, tomamos un tercio de las primeras filas como conjunto de prueba y el resto como conjunto de entrenamiento. ¿Esta afirmación es correcta?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 4. Capítulo 3
some-alt