Evaluació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.
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.
123456789101112131415import 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 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.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 3.13
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 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.
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.
123456789101112131415import 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 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.
¡Gracias por tus comentarios!