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 ML con Scikit-learn

bookEvaluación del Modelo

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 precisamente el modelo realiza 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 genere bien.

Note
Definición

Generalización es la capacidad del modelo para desempeñarse eficazmente con datos nuevos y no vistos, más allá de los datos en los que fue entrenado. Mide cuán precisamente las predicciones de un modelo pueden aplicarse a escenarios del mundo real fuera del conjunto de entrenamiento.

Esto puede lograrse 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.

Entrenar el modelo utilizando el conjunto de entrenamiento y luego evaluarlo 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.

Por lo general, 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 grandes.

En este ejemplo, con solo 342 instancias (un conjunto de datos pequeño), asignar 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))
copy

El modelo ahora se entrena con el conjunto de entrenamiento utilizando .fit(X_train, y_train) y se evalúa con el conjunto de prueba utilizando .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. ¿Es correcta esta afirmación?

Select the correct answer

¿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

Awesome!

Completion rate improved to 3.13

bookEvaluació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 precisamente el modelo realiza 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 genere bien.

Note
Definición

Generalización es la capacidad del modelo para desempeñarse eficazmente con datos nuevos y no vistos, más allá de los datos en los que fue entrenado. Mide cuán precisamente las predicciones de un modelo pueden aplicarse a escenarios del mundo real fuera del conjunto de entrenamiento.

Esto puede lograrse 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.

Entrenar el modelo utilizando el conjunto de entrenamiento y luego evaluarlo 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.

Por lo general, 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 grandes.

En este ejemplo, con solo 342 instancias (un conjunto de datos pequeño), asignar 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))
copy

El modelo ahora se entrena con el conjunto de entrenamiento utilizando .fit(X_train, y_train) y se evalúa con el conjunto de prueba utilizando .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. ¿Es correcta esta afirmación?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

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