Menu
CoddyTech

Elige un modelo

Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 52 de 58.

Varias familias de modelos podrían clasificar a los pingüinos. ¿Cuál se ajusta mejor? Dales a todos las mismas particiones y los mismos pliegues, y luego compáralos, como estos modelos de vino:

Exactitudes de cinco pliegues por candidato en los datos de vino, representadas como puntos, con una barra negra en cada media: la regresión logística es la más alta y concentrada en 0.970, k-NN en 0.940, el árbol es el más bajo con un pliegue en 0.78

Gana la media más alta. Una desviación estándar pequeña indica que ganó en cada partición, no en una división afortunada.

pipe = make_pipeline(prep, model)
scores = cross_val_score(pipe, X_train, y_train, cv=5)

En cada pliegue se vuelven a ajustar los carriles con su propia parte de entrenamiento, así que cada puntuación sigue siendo fiable. Los pingüinos de prueba permanecen apartados.

challenge icon

Desafío

Intermedio

Cuatro candidatos quieren el puesto. El código inicial contiene tus etapas, las listas names y models, y lee un número de particiones.

  1. Para cada candidato, valida de forma cruzada la canalización de prep y ese modelo con las filas de entrenamiento.
  2. Imprime su media y desviación estándar, con 3 decimales.
  3. Imprime al ganador: la media más alta.

Para otra colonia y 5 particiones:

k-NN: mean 0.951, std 0.031
Logistic regression: mean 0.964, std 0.012
Random forest: mean 0.958, std 0.027
Decision tree: mean 0.902, std 0.048
Winner: Logistic regression

Pruébalo tú mismo

import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier

# La colonia de Meet the Penguins, sus características y su etiqueta
penguins = pd.read_csv("penguins.csv")
numbers = ["bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g"]
text = ["island", "sex"]
X = penguins[numbers + text]
y = penguins["species"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, stratify=y, random_state=0)

# De Prepare the Data: las dos vías
number_steps = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
text_steps = make_pipeline(SimpleImputer(strategy="constant", fill_value="unknown"), OneHotEncoder())
prep = ColumnTransformer([("numbers", number_steps, numbers), ("words", text_steps, text)])

# Los candidatos
names = ["k-NN", "Logistic regression", "Random forest", "Decision tree"]
models = [KNeighborsClassifier(), LogisticRegression(max_iter=1000),
          RandomForestClassifier(n_estimators=100, random_state=0), DecisionTreeClassifier(random_state=0)]
folds = int(input())

# Escribe tu código a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Aprendizaje supervisado

Practica por tu cuenta: Compilador de Python online