1
resposta

Deploy de um modelo de machine learning em produção

Olá, eu criei um modelo para análise de sentimentos utilizando LogisticRegression(). Salvei o modelo e estou com dificuldades para colocar o mesmo em produção, pois eu recebo a seguinte mensagem de erro: ValueError: X has 5 features per sample; expecting 864900. Já tentei várias coisas diferentes para tentar resolver o problema mas nenhuma funcionou, segue abaixo o código que estou utilizando para tentar fazer o predict no meu endpoint da api:

    dados = request.get_json(force=True)
        teste = dados['texto']

        tfidf = TfidfVectorizer(lowercase=False, ngram_range = (1,2))
        vetor_tfidf = tfidf.fit_transform([teste])

        classification = model.predict(vetor_tfidf)

        resposta = {
                'classificacao': classification
        }

    return jsonify(resposta)
1 resposta

Olá Giovani, como você está?

Peço desculpas pela demora em obter uma resposta.

Essa mensagem de erro indica que seu modelo foi remodelado com os dados de teste e um novo vocabulário foi criado, fazendo com que o tamanho desses dados ficassem diferente do esperado. Isso provavelmente está ocorrendo porque você está refazendo o fit do modelo e isso não é necessário, uma vez que ele já teria que ter sido feito com os dados treinados do modelo. Então, modifique de:

tfidf.fit_transform([teste])

para:

tfidf.transform([teste])

Outro ponto que vale mencionar é que a classe TfidVectorizer não precisa ser instanciado a cada chamada da API e uma boa abordagem para isso é criar um pipeline para armazenar tanto a parte de transformação dos dados quanto o modelo. Nesta aula em específico do curso de Machine Learning: Validação de Modelos é ensinado sobre isso, considere o StanderScaler como se fosse o TfidVectorizer.

Também deixo como referência dois cursos que tratam desse assunto, sobre como colocarmos um modelo de Machine Learning em produção:

No primeiro curso que recomendei, é ensinado a fazer os endpoints da API após salvar previamente o modelo e depois apenas carregá-lo para API e fazer as predições, pois se toda vez que rodarmos a API o modelo tiver que ser executado novamente, ficaríamos com um gargalo enorme de tempo, por isso o salvamos. Já no segundo curso é utilizado os recursos do Google Cloud para colocá-lo efetivamente em produção.

Qualquer dúvida fico à disposição.

Grande abraço!