Columnas mixtas
Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 46 de 58.
La mayoría de las tablas mezclan palabras y números, y cada tipo necesita su propio paso. ColumnTransformer envía cada columna a su paso y combina los resultados:
Para una tienda de discos, en código:
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
prep = ColumnTransformer([
("words", OneHotEncoder(), ["genre", "condition"]),
("numbers", StandardScaler(), ["price", "year"]),
])
pipe = make_pipeline(prep, LogisticRegression(max_iter=1000))Cada entrada es un nombre, un paso y sus columnas. A diferencia de get_dummies, el codificador recuerda las categorías de entrenamiento, así que un nuevo registro obtiene las mismas 7 columnas.
Desafío
IntermedioUn club de ajedrez quiere conocer la probabilidad de victoria de cada jugador antes de una partida. El código inicial divide chess.csv y lee la partida de esta noche.
- opening y
color, escalarating_gapyminutes, e imprime cuántas columnas se obtienen a partir de las filas de entrenamiento. - Encadénalo con una regresión logística, ajústalo e imprime la precisión de prueba.
- Imprime la probabilidad de victoria de esta noche.
Otro club, tres aperturas y sicilian, black, 50, 15:
Columns after preparing: 7
Test accuracy: 0.805
Win chance: 0.66Pruébalo tú mismo
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# Partidas de un club de ajedrez: la apertura, el color del jugador, su puntuación menos
# la del oponente, los minutos en el reloj y si el jugador ganó (1) o no (0)
games = pd.read_csv("chess.csv")
X = games[["opening", "color", "rating_gap", "minutes"]]
y = games["won"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# La partida de esta noche, una fila con las mismas columnas
game = pd.DataFrame({"opening": [input()], "color": [input()],
"rating_gap": [int(input())], "minutes": [int(input())]})
# Escribe tu código a continuación
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 spam7Sobreajuste
Subajuste y sobreajusteCurvas de aprendizajeRegularizaciónConjuntos de validaciónRepaso: Ajustar un árbol10Canalizaciones
CanalizacionesColumnas mixtasImputación en una canalizaciónAjuste de una canalizaciónRepaso: limpiar y predecir2Vecinos 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