1
resposta

Erro no Desafio 4 da última aula

Ao executar o código abaixo para prever a classe do novo dado dá erro no transform do modelo_one_hot.

O erro é este: ValueError: Found unknown categories ['sim'] in column 2 during transform

Como resolvo?

import pickle

with open('modelo_onehotenc.pkl', 'wb') as arquivo:
  pickle.dump(one_hot, arquivo)

with open('modelo_arvore.pkl', 'wb') as arquivo:
  pickle.dump(arvore, arquivo)
  
novo_dado = pd.DataFrame({
    'score_credito': [850],
    'pais':['França'],
    'sexo_biologico':['Homem'],
    'idade': [27],
    'anos_de_cliente': [3],
    'saldo': [56000],
    'servicos_adquiridos': [1],
    'tem_cartao_credito': ['sim'],
    'membro_ativo': ['sim'],
    'salario_estimado': [85270.00]
})

modelo_arvore = pd.read_pickle('/content/modelo_arvore.pkl')
modelo_one_hot = pd.read_pickle('/content/modelo_onehotenc.pkl')

novo_dado = modelo_one_hot.transform(novo_dado)
modelo_arvore.predict(novo_dado)
1 resposta

Olá, Paulo, tudo bem?

O erro ValueError: Found unknown categories ['sim'] in column 2 during transform geralmente ocorre quando a transformação OneHotEncoder encontra uma categoria que não estava presente no conjunto de dados de treinamento.

O modelo foi treinado com categorias específicas e quando você tenta transformar um novo dado que contém uma categoria que o modelo não conhece, ele lança esse erro.

Uma possível solução para isso seria verificar as categorias usadas para treinar o modelo OneHotEncoder e garantir que seus novos dados contenham apenas essas categorias.

Notei também que você utilizou um código diferente do instrutor. Teste utilizando o seguinte código:

novo_dado = {
    'idade': [45],
    'estado_civil':['solteiro (a)'],
    'escolaridade':['superior'],
    'inadimplencia': ['nao'],
    'saldo': [23040],
    'fez_emprestimo': ['nao'],
    'tempo_ult_contato': [800],
    'numero_contatos': [4]
}

Espero ter ajudado.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!