2
respostas

[Dúvida] Não entendi o uso de logisticregression__ no Grid Search

Olá.

Nesta aula, durante a criação dos dicionários a serem passados para o param_grid do GridSearchCV, no caso da Regressão Logística, cada chave do dicionário começou com o prefixo logisticregression__. Foi explicado que é feito dessa forma para dizer para o pipeline onde ele deve aplicar o hiperparâmetro.

Fiquei com dúvida com relação a essa nomenclatura. Isso é um padrão de prefixo quando trabalhamos com pipeline? Se fosse outro modelo, bastaria eu mudar o nome no prefixo (nomedomodelo__)? Em um curso anterior, utilizamos o pipeline do imblearn, e nele a gente podia definir um nome para cada passo do pipeline, e assim usar esse nome como referência. No caso do make_pipeline do sklearn, ele é diferente e cria esses prefixos por padrão para acessar um passo do pipeline?

Obrigado!

2 respostas

E aí, Matheus!

Vo tentar te ajudar do meu entendimento tá? O lance do prefixo logisticregression__ é porque a gente tá lidando com um pipeline do sklearn. Quando a gente usa o make_pipeline(), ele dá automaticamente um nome pra cada passo do pipeline baseado no tipo de objeto que a gente tá usando. No caso da Regressão Logística, ele coloca o nome de logisticregression.

Então, quando a gente tá ajustando hiperparâmetros num pipeline usando o GridSearchCV, a gente precisa falar pra qual passo do pipeline aquele hiperparâmetro é. A gente faz isso usando a sintaxe nomedopasso__hiperparametro.

Se a gente tivesse trabalhando com um modelo de floresta aleatória, por exemplo, o prefixo seria randomforestclassifier__, assumindo que o pipeline foi criado com a função make_pipeline(RandomForestClassifier()).No caso do pipeline do imblearn que você mencionou, quando a gente define um nome pra cada passo do pipeline, a gente pode usar esse nome como referência. É tipo o que acontece no make_pipeline(), só que no make_pipeline() os nomes são gerados automaticamente.

Tomara que eu não tenha enrolado demais!

Oi Estudante (não sei por que seu perfil não aparece).

Agradeço sua contribuição. Meu raciocínio vai na mesma linha do seu e, aparentemente, é como o make_pipeline funciona.

Obrigado!