Questão nº 27
Questão de Tecnologia da Informação · FCC TRT15 2024 (nº 27)
Uma Analista está desenvolvendo um modelo de aprendizado de máquina em Python 3, em condições ideais. Após dividir o conjunto de dados em treinamento e teste, deseja criar um pipeline no scikit-learn para pré-processamento e treino do modelo. O pipeline deve lidar com variáveis categóricas utilizando `OneHotEncoder` e treinar um modelo de árvore de decisão com os parâmetros padrão. Isso pode ser feito com base no trecho de código abaixo.
```python
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OneHotEncoder
from sklearn.tree import DecisionTreeClassifier
pipeline = Pipeline([
I
])
pipeline.fit(X_train, y_train)
```
A lacuna I deve ser corretamente preenchida com:
- A`('encoder', OneHotEncoder(handle_unknown='error')), ('modelo', DecisionTreeRegressor())`
- B`('encoder', OneHotEncoder(sparse='False')), ('modelo', DecisionTreeRegressor(criterion='gini'))`
- C`('encoder', Label_Encoder()), ('modelo', DecisionTreeClassifier())`
- D`('encoder', OneHotEncoder(handle_unknown='ignore')), ('modelo', DecisionTreeClassifier())` (alternativa correta)
- E`('encoder', LabelBinarizer()), ('modelo', DecisionTreeClassifier(maxdepth=3))`
Resposta comentada
Gabarito Alternativa D
Um pipeline no scikit-learn é como uma linha de montagem para seu modelo de aprendizado de máquina, onde cada etapa (como pré-processar os dados ou treinar o modelo) é executada em sequência, garantindo consistência e organização.
- (A) Incorreta: O problema pede para treinar um "modelo de árvore de decisão", e embora
DecisionTreeRegressorseja uma árvore de decisão, ele é usado para problemas de regressão (prever valores contínuos), enquanto o gabarito e a prática comum para "modelo de árvore de decisão" sem especificação de tarefa apontam para classificação (prever categorias), que é feita comDecisionTreeClassifier. Além disso, ohandle_unknown='error'pode causar falha se novas categorias aparecerem no teste. - (B) Incorreta: O parâmetro
sparsedoOneHotEncoderespera um valor booleano (TrueouFalse), não uma string'False'. Além disso,DecisionTreeRegressornão possui o parâmetrocriterion='gini', que é específico paraDecisionTreeClassifier. - (C) Incorreta: A classe
Label_Encoderestá incorreta (o nome correto éLabelEncoder). Mesmo que fosseLabelEncoder, o problema especifica o uso deOneHotEncoderpara variáveis categóricas, que é mais adequado para features de entrada (X) para evitar a criação de uma ordem artificial. - (D) Correta: Esta alternativa preenche a lacuna corretamente. O
OneHotEncoder(handle_unknown='ignore')é o pré-processador solicitado e ohandle_unknown='ignore'é uma boa prática para lidar com categorias desconhecidas no futuro sem quebrar o pipeline. ODecisionTreeClassifier()é o modelo de árvore de decisão para classificação e, sem parâmetros, utiliza os parâmetros padrão, conforme solicitado. - (E) Incorreta: O problema pede explicitamente o uso de
OneHotEncoder, nãoLabelBinarizer. Além disso,DecisionTreeClassifier(max_depth=3)não utiliza os parâmetros padrão do modelo, poismax_depth=3é uma configuração específica, enquanto o padrão éNone.
Fonte: FCC TRT15 2024 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.