Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Estimador Final | Pipelines
Introdução ao ML com Scikit-learn

bookEstimador 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.

Note
Nota

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)
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

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

bookEstimador 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.

Note
Nota

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)
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 5
some-alt