Colunas mistas
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 46 de 58.
A maioria das tabelas combina palavras e números, e cada tipo precisa da sua própria etapa. Um ColumnTransformer encaminha cada coluna para sua etapa e combina os resultados:
Para uma loja de discos, em 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 é um nome, uma etapa e suas colunas. Diferentemente de get_dummies, o codificador memoriza as categorias de treinamento, então um novo registro recebe as mesmas 7 colunas.
Desafio
MédioUm clube de xadrez quer saber a chance de vitória de cada jogador antes de uma partida. O código inicial divide chess.csv e lê os dados da partida de hoje à noite.
- Codifique
openingecolor, dimensionerating_gapeminutese imprima quantas colunas isso gera a partir das linhas de treinamento. - Imprima a chance de vitória na partida de hoje à noite.
Outro clube, três aberturas e sicilian, black, 50, 15:
Columns after preparing: 7
Test accuracy: 0.805
Win chance: 0.66Experimente você mesmo
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 um clube de xadrez: a abertura, a cor do jogador, sua pontuação menos
# a do adversário, os minutos no relógio e se o jogador venceu (1) ou não (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)
# A partida de hoje à noite, uma linha com as mesmas colunas
game = pd.DataFrame({"opening": [input()], "color": [input()],
"rating_gap": [int(input())], "minutes": [int(input())]})
# Escreva seu código abaixo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Aprendizado supervisionado
1Seu primeiro modelo
Aprendendo com exemplosConjuntos de treino e testeAjustar e preverAvaliar um modeloRecapitulação: classificador de sementes4Regressão logística
Previsões de sim ou nãoO limiar de decisãoPesos como evidênciasVárias classesRevisão: filtro de spam7Sobreajuste
Subajuste e sobreajusteCurvas de aprendizadoRegularizaçãoConjuntos de validaçãoRevisão: ajustando uma árvore10Pipelines
PipelinesColunas mistasImputação em um pipelineAjustando um pipelineRevisão: limpar e prever2Vizinhos Mais Próximos
Como o k-NN DecideEscolhendo kLimites de DecisãoEscalonamento para VizinhosRevisão: Vizinhos do Vinho5Avaliando Classificadores
A Matriz de ConfusãoPrecisão e RevocaçãoA Pontuação F1Classes DesbalanceadasCurvas ROCRecapitulação: Teste de Triagem8Validação Cruzada
Validação K-FoldComparando Modelos de Forma JustaBusca em GradeRevisão: Consertos de Skate11Projeto: Espécies de Pinguins
Conheça os PinguinsPrepare os DadosEscolha um ModeloAjuste o VencedorColoque o Modelo em Produção3Regressão Linear
Prevendo númerosVárias característicasMedindo errosGráficos de resíduosRevisão: aluguel de bicicletas6Árvores de Decisão
Árvores fazem perguntasLendo uma árvoreProfundidade da árvoreImportância das característicasRevisão: decisões de empréstimoPratique por conta própria: Compilador de Python online