1
resposta

[Bug] Desvio padrão

Vi essa dúvida no fórum, porém como ela é antiga, não consegui responder diretamente no tópico original:

https://cursos.alura.com.br/forum/topico-desvio-padrao-174286

Conteúdo do tópico original:

Quando rodo o código, retorna desvio padrão = 0.

from sklearn.model_selection import cross_validate
from sklearn.dummy import DummyClassifier
import numpy as np

SEED = 301
np.random.seed(SEED)

modelo = DummyClassifier()
results = cross_validate(modelo, x_azar, y_azar, cv = 10, return_train_score=False)
media = results['test_score'].mean()
desvio_padrao = results['test_score'].std()
print("Accuracy com dummy stratified, 10 = [%.2f, %.2f]" % ((media - 2 * desvio_padrao)*100, (media + 2 * desvio_padrao) * 100))


O results['test_score'] apresenta array:
array([0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58])

Eu estava com o mesmo problema e depois de investigar um pouco, acho que descobri a solução.

Quando o curso foi feito, a estratégia 'default' (padrão) do Dummy Classifier era a 'stratified'. Desde a versão 0.24 do Sci-Kit Learner, a estratégia padrão mudou para 'prior'. Link para a documentação: https://scikit-learn.org/stable/modules/generated/sklearn.dummy.DummyClassifier.html

Assim, para ter resultados próximos daqueles apresentados no video, basta mudar a configuração do modelo dessa maneira:

model = DummyClassifier(strategy='stratified')

Vale ressaltar que meus resultados ainda foram levemente diferentes, mas bem próximos (47.18% e 53.60%).

1 resposta

Olá, Richard, tudo bem?

Obrigada por compartilhar essa informação aqui no fórum.

Você está correto. Quando o instrutor gravou o curso, a versão do scikit-learn (sklearn) tinha como valor padrão para o parâmetro strategy o stratified. No entanto, a partir da versão 0.24.0, houve uma alteração no valor padrão, que passou a ser prior, como descrito na documentação:

Se tiver qualquer outra dúvida, não hesite em me perguntar.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software