Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Curso horrível

Tem 200 mil pessoas passando pelo mesmo problema:

InvalidParameterError: The 'binarize' parameter of BernoulliNB must be None or a float in the range [0, inf). Got -0.44 instead.

Não vem NINGUÉM da Alura para sanar essa dúvida.

Não faz nenhum sentido o código da professora funcionar e o nosso não.

As aulas dessa formação de machine learning precisam TODAS serem revistas.

3 respostas

Olá! Estou com o mesmo problema, mas aqui vai o que funcionou pra mim:


# Binarize os recursos usando a mediana
X_treino_binarizado = np.where(X_treino > np.median(X_treino), 1, 0)

# Crie e ajuste o classificador BernoulliNB
bnb = BernoulliNB()
bnb.fit(X_treino_binarizado, y_treino)

Assim ele não tenta aplicar o BernoulliNB no valor negativo, primeiro ele faz a binarização, depois aplica o método.

Oi Nicole, obrigado pela sua resposta!

Saberia dizer qual a consequência prática de não usar o valor -0.44 no algoritmo? Vi muitos alunos dizendo que apenas usaram o valor positivo 0.44 aos invés do negativo. Mas pra mim é uma "gambiarra" fazer isso sem saber o que acontece na prática.

solução!

Olha, aplicando aquele método ali de cima, ele tecnicamente está ainda usando o valor de -0,44, de forma que não de o erro. Ele estaria binarizando antes de entrar no Bernoulli.

Maaas, eu acho que usar o valor 0.44 não seria muito certo para o problema, por que todo o resto dos teus valores estaria em uma escala negativa, e ai aplicar o método pra um valor de mediana positivo, estaria jogando os resultados tudo para cima, em vez de focar o valor real. Então não sei, não tenho total propriedade pra dizer que sim ou não, mas evitaria esse tipo de 'aproximaçaõ' apenas invertendo o sinal.