Estimador Final
Até este ponto, o Pipeline
foi utilizado principalmente para pré-processamento. No entanto, o pré-processamento é apenas uma etapa intermediária. Após a transformação dos dados, eles geralmente são passados para um preditor (modelo) para gerar resultados ou previsões.
A classe Pipeline
oferece suporte a isso permitindo que o estimador—frequentemente um preditor—seja a etapa final. A ilustração abaixo demonstra como um Pipeline
opera quando seu último componente é um preditor.
Quando o método .fit()
de um pipeline é chamado, cada transformador executa .fit_transform()
. Em contraste, ao chamar .predict()
, o pipeline aplica .transform()
aos dados antes de passá-los ao preditor.
O método .predict()
é utilizado principalmente para novas instâncias, que devem passar pelas mesmas transformações aplicadas aos dados de treinamento durante o .fit()
.
Por que .transform()
?
O pipeline aplica .transform()
em vez de .fit_transform()
ao lidar com novas instâncias de dados para previsão. Isso garante transformação consistente entre os conjuntos de treinamento e teste.
Por exemplo, considere um conjunto de dados com uma característica categórica 'Color'
que deve ser codificada antes do treinamento do modelo:
Veja como os dados de treinamento codificados com one-hot ficam:
Aqui estão as novas instâncias para prever:
Se .fit_transform()
fosse aplicado às novas instâncias, o OneHotEncoder
poderia gerar colunas em uma ordem diferente ou até mesmo introduzir novas colunas. Isso faria com que os novos dados fossem transformados de forma inconsistente com o conjunto de treinamento, tornando as previsões não confiáveis.
No entanto, usar .transform()
garante que os novos dados sejam codificados exatamente como os dados de treinamento, ignorando categorias não vistas durante o treinamento:
Adicionando o Estimador Final
Para utilizar o estimador final, basta adicioná-lo como o último passo do pipeline. Por exemplo, no próximo capítulo, utilizaremos um modelo KNeighborsClassifier
como estimador final.
A sintaxe é a seguinte:
# Creating a pipeline
pipe = make_pipeline(ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain why using .fit_transform() on new data is problematic?
How does the pipeline handle unseen categories during prediction?
Can you give more examples of using a final estimator in a pipeline?
Awesome!
Completion rate improved to 3.13
Estimador Final
Deslize para mostrar o menu
Até este ponto, o Pipeline
foi utilizado principalmente para pré-processamento. No entanto, o pré-processamento é apenas uma etapa intermediária. Após a transformação dos dados, eles geralmente são passados para um preditor (modelo) para gerar resultados ou previsões.
A classe Pipeline
oferece suporte a isso permitindo que o estimador—frequentemente um preditor—seja a etapa final. A ilustração abaixo demonstra como um Pipeline
opera quando seu último componente é um preditor.
Quando o método .fit()
de um pipeline é chamado, cada transformador executa .fit_transform()
. Em contraste, ao chamar .predict()
, o pipeline aplica .transform()
aos dados antes de passá-los ao preditor.
O método .predict()
é utilizado principalmente para novas instâncias, que devem passar pelas mesmas transformações aplicadas aos dados de treinamento durante o .fit()
.
Por que .transform()
?
O pipeline aplica .transform()
em vez de .fit_transform()
ao lidar com novas instâncias de dados para previsão. Isso garante transformação consistente entre os conjuntos de treinamento e teste.
Por exemplo, considere um conjunto de dados com uma característica categórica 'Color'
que deve ser codificada antes do treinamento do modelo:
Veja como os dados de treinamento codificados com one-hot ficam:
Aqui estão as novas instâncias para prever:
Se .fit_transform()
fosse aplicado às novas instâncias, o OneHotEncoder
poderia gerar colunas em uma ordem diferente ou até mesmo introduzir novas colunas. Isso faria com que os novos dados fossem transformados de forma inconsistente com o conjunto de treinamento, tornando as previsões não confiáveis.
No entanto, usar .transform()
garante que os novos dados sejam codificados exatamente como os dados de treinamento, ignorando categorias não vistas durante o treinamento:
Adicionando o Estimador Final
Para utilizar o estimador final, basta adicioná-lo como o último passo do pipeline. Por exemplo, no próximo capítulo, utilizaremos um modelo KNeighborsClassifier
como estimador final.
A sintaxe é a seguinte:
# Creating a pipeline
pipe = make_pipeline(ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
Obrigado pelo seu feedback!