1
resposta

[Dúvida] Erro com o parâmetro "binarize"

Foi apresentado no video do curso a opção de "binarize" dentro do BernoulliNB, colocando ele como o valor encontrado da mediana. O valor da mediana foi de -0.44, e código permite isso. Porém, se você tenta dar um fit no seu objeto com "bnb.fit(x_treino, y_treino)", ele da a seguinte mensagem de erro: "The 'binarize' parameter of BernoulliNB must be None or a float in the range (0, inf). Got -0.44 instead." Não sei se foi alterado alguma versão do BernoulliNB, mas pelo notebook fornecido da aula daria erro agora.

1 resposta

Entre o tempo de gravação dessa aula e o da gente assistir o vídeo, ocorreram algumas mudanças nessa blibioteca. Objetos instanciados da classe BernoulliNB não aceitam mais valores para o argumento binarize que sejam menores que 0. Para lidar com isso, você pode simplesmente colocar binazire= 0 ou aplicar um tipo de padronização que retorne os dados de X em intervalos entre 0 e 1. Pegar a mediana igual foi mostrado no vídeo e então passar essa mediana (que vai ser um valor entre 0 e 1) como argumento para binazire. Um exemplo seria;

import pandas as pd from sklearn.preprocessing import MinMaxScaler

Create a sample DataFrame

data = {'X1': [10, 20, 30, 40, 50], 'X2': [5, 15, 25, 35, 45], 'X3': [1, 2, 3, 4, 5]} df = pd.DataFrame(data)

Initialize the MinMaxScaler

scaler = MinMaxScaler()

Normalize the data between 0 and 1

df_normalized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

Output the normalized DataFrame

print(df_normalized)