Responder a: Adicionar Novo Registro com Variável Categórica

Home Fóruns Fórum Machine Learning e Data Science com Python de A à Z Adicionar Novo Registro com Variável Categórica Responder a: Adicionar Novo Registro com Variável Categórica

#28465
Fábio Spak
Participante

    Olá Nikolas, segue a resposta do instrutor Denny:

    O novo registro deve primeiro passar por todo o processamento da mesma forma que o dataset usado no treinamento passou, ou seja, todas as etapas de LabelEncoder e o OneHotEncoder no final, mas desta vez usando o método transform já que fit é usado somente com os dados de treinamento. Entretanto, você precisa observar que, sempre que usa o método fit_transform na mesma instância do LabelEncoder (no caso, labelencoder_previsores), como foi mostrado na aula, ele perde a informação referente à variável que já havia processado. Para evitar isso, é preciso criar uma instância separada para cada variável, como por exemplo:

    labelencoder_previsores_1 = LabelEncoder()
    labelencoder_previsores_3 = LabelEncoder()
    labelencoder_previsores_5 = LabelEncoder()
    [...]
    labelencoder_previsores_13 = LabelEncoder()

    Aí você aplica cada instância separadamente a cada variável:

    previsores[:,1] = labelencoder_previsores_1.fit_transform(previsores[:,1])
    previsores[:,3] = labelencoder_previsores_3.fit_transform(previsores[:,3])
    previsores[:,5] = labelencoder_previsores_5.fit_transform(previsores[:,5])
    [...]
    previsores[:,13] = labelencoder_previsores_13.fit_transform(previsores[:,13])

    E depois, no novo registro, somente o método transform:

    novo_registro[:,1] = labelencoder_previsores_1.transform(novo_registro[:,1])
    novo_registro[:,3] = labelencoder_previsores_3.transform(novo_registro[:,3])
    novo_registro[:,5] = labelencoder_previsores_5.transform(novo_registro[:,5])
    [...]
    novo_registro[:,13] = labelencoder_previsores_13.transform(novo_registro[:,13])

    O ColumnTransformer não precisa mudar, já que ele processa mais de uma coluna por vez:

    novo_registro = column_transformer.transform(novo_registro).toarray()

    Aí é só chamar seu modelo com o método predict para classificar o novo registro.

    • Esta resposta foi modificada 3 anos, 10 meses atrás por Fábio Spak.