Imputação em um pipeline
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 47 de 58.
Registros reais têm lacunas, e a maioria dos modelos não aceita esses dados. Um SimpleImputer preenche cada lacuna com a média, a mediana ou o valor mais frequente da coluna.
Preencha antes da divisão, e as linhas de teste ajudam a escolher esse valor: um vazamento. Sete profundidades de mergulho e uma lacuna:
Em um pipeline, fit aprende os preenchimentos usando apenas as linhas de treinamento:
from sklearn.impute import SimpleImputer
pipe = make_pipeline(SimpleImputer(strategy="median"), StandardScaler(), model)
pipe.fit(X_train, y_train)
print(pipe[0].statistics_) # os valores de preenchimento da primeira etapaPara um registro de mergulho (profundidade, minutos, temperatura da água), isto exibe:
[19. 44. 21.]Com palavras também, as etapas numéricas se tornam uma faixa do ColumnTransformer:
lane = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
("numbers", lane, ["depth_m", "minutes"])Desafio
MédioUm serviço florestal prevê quais descargas elétricas iniciam incêndios, mas algumas medições estão ausentes. O código inicial divide wildfire.csv e lê uma estratégia, mean ou median.
- Ajuste um pipeline com um imputador que use essa estratégia, um escalonador e uma regressão logística. Imprima a acurácia no conjunto de teste.
- Para cada coluna, imprima o valor de preenchimento do pipeline e o que todas as linhas de
Xproduziriam, com 1 casa decimal.
Outra floresta, com median:
Test accuracy: 0.840
humidity_pct: fill 46.0, all rows would give 46.0
wind_kmh: fill 29.0, all rows would give 32.0
temp_c: fill 25.0, all rows would give 26.0
days_without_rain: fill 23.0, all rows would give 23.0Onde os dois diferem, preencher antes da divisão teria permitido que as linhas de teste influenciassem os dados de treinamento.
Experimente você mesmo
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# Descargas elétricas em uma floresta seca: a descarga iniciou um incêndio (1) ou não (0)?
# Algumas medições meteorológicas estão ausentes.
strikes = pd.read_csv("wildfire.csv")
columns = ["humidity_pct", "wind_kmh", "temp_c", "days_without_rain"]
X = strikes[columns]
y = strikes["fire"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
strategy = 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