Varias clases
Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 19 de 58.
¿Limón, lima o naranja? La regresión logística también maneja tres clases. Aquí, una nueva fruta cae entre los limones y las naranjas:
model = LogisticRegression(max_iter=1000)
model.fit(X, kind) # X: diámetro, peso; kind: limón, lima o naranja
print(model.classes_)
print(np.round(model.predict_proba([[6.7, 144]]), 2))
print(model.predict([[6.7, 144]]))Esto imprime:
['lemon' 'lime' 'orange']
[[0.61 0. 0.39]]
['lemon']Cada fila contiene una probabilidad por clase, en el orden de classes_, y todas suman 1. predict elige la mayor.
Así que el modelo indica qué tan seguro está: 61% limón es una decisión reñida que merece una segunda mirada.
Desafío
IntermedioUna aplicación de podcasts clasifica los episodios nuevos como comedia, noticias o true crime. El código inicial ajusta un LogisticRegression con episodes.csv (duración, número de hablantes, risas por minuto) y lee un episodio nuevo en episode, una tabla de una fila.
Completa describe(episode):
- Imprime la probabilidad de cada tipo de programa, en el orden de
model.classes_, como porcentaje entero. - Devuelve el tipo más probable.
Para el episodio de otra aplicación:
comedy: 12%
news: 70%
true crime: 18%
Best guess: newsPruébalo tú mismo
import pandas as pd
from sklearn.linear_model import LogisticRegression
episodes = pd.read_csv("episodes.csv")
features = ["length_min", "speakers", "laughs_per_min"]
model = LogisticRegression(max_iter=1000)
model.fit(episodes[features], episodes["show_type"])
# Muestra la probabilidad de cada tipo de programa para un episodio (una tabla de una sola fila) y luego devuelve el tipo más probable
def describe(episode):
# Escribe tu código aquí
return "unknown"
# No cambies las líneas siguientes: un episodio nuevo, obtenido de la entrada
length = float(input())
speakers = int(input())
laughs = float(input())
episode = pd.DataFrame({"length_min": [length], "speakers": [speakers], "laughs_per_min": [laughs]})
best = describe(episode)
print(f"Best guess: {best}")
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje supervisado
1Tu primer modelo
Aprender de ejemplosConjuntos de entrenamiento y pruebaAjustar y predecirEvaluar un modeloRepaso: clasificador de semillas4Regresión logística
Predicciones de sí o noEl umbral de decisiónLos pesos como evidenciaVarias clasesRepaso: filtro de spam2Vecinos más cercanos
Cómo decide k-NNCómo elegir kFronteras de decisiónEscalado para los vecinosRepaso: vecinos del vino5Medición de clasificadores
La matriz de confusiónPrecisión y exhaustividadLa puntuación F1Clases desequilibradasCurvas ROCRepaso: prueba de detección8Validación cruzada
Validación K-FoldComparación justa de modelosBúsqueda en cuadrículaRepaso: reparaciones de monopatines11Proyecto: especies de pingüinos
Conoce a los pingüinosPrepara los datosElige un modeloAjusta el modelo ganadorPublica el modelo3Regresión lineal
Predicción de númerosVarias característicasMedición de erroresGráficos de residuosRepaso: alquiler de bicicletas6Árboles de decisión
Los árboles hacen preguntasLeer un árbolProfundidad del árbolImportancia de las característicasRepaso: decisiones de préstamosPractica por tu cuenta: Compilador de Python online