2
respostas

Dúvida sobre deploy do meu modelo de machine learning

Olá, finalizei o curso e estou muito contente, porém me surgiu uma dúvida. Eu repliquei o código feito no curso em uma base de dados com alguns tweets, o modelo funcionou normalmente e então salvei o modelo utilizando o código:

filename = 'modelo.pkl'
pickle.dump(regressao_logistica, open(filename, 'wb'))

Logo depois comecei a criar a minha API para alguns testes, porém não estou consigo utilizar o método predict() do modelo carregado. Tentei de tudo e não consegui resolver. Segue o código:

@app.route('/predict', methods=['POST'])
def predict():
    dados = request.get_json(force=True)
    teste = dados['texto']

    tratamento_1 = tratamento1([teste])
    tratamento_2, punctuation_stopwords = tratamento2(tratamento_1)
    tratamento_3, without_accents = tratamento3(tratamento_2, punctuation_stopwords)
    tratamento_4 = tratamento4(tratamento_3, without_accents)
    tratamento_5 = tratamento5(tratamento_4, without_accents)

    classification = model.predict([tratamento_5])

    resposta = {
        'classificacao': classification
    }

    return jsonify(resposta)

No código acima eu replico no meu request os mesmos tratamentos utilizados no modelo (tudo funcionando normalmente). O problema está no model.predict() que está me retornando a seguinte mensagem: ValueError: X has 1 features per sample; expecting 864900. Alguém pode me ajudar? Obrigado desde já.

2 respostas

Olá Giovanni,

Olhando só para o erro me parece que o problema está na dimensão dos seu vetor, ele está esperando um vetor de 864900 mas vc passa um vetor de 1 posição. Talvez seja por estar fazendo o predict.([tratamento_5]).

Qual é a saída de tratamento_5.shape? E talvez da forma que vc escreveu os tratamentos vc não precise passar [tratamento_5] mas só tratamento_5

Giovani, mais uma coisa que acabei de reparar.

Parece que vc não está vetorizando o texto (pode ser que a vetorização esteja na sua função tratamento_5, mas não tenho certeza, caso não esteja vc precisa vetorizar com o modelo Bag of Words utilizado no seu treitamento do classificador!