Machine Learning: desenvolvimento e deploy com Python
Uma abordagem sobre o ciclo de um projeto de machine learning.
Introdução
Tenho escrito vários artigos aqui no Medium explicando como criar modelos de Machine Learning. Neste além de criar o modelo vou também criar uma interface web para consumirmos o resultado do nosso modelo. Dessa forma o foco neste artigo é o todo, e não o desenvolvimento do modelo.
Tópicos abordados
- Criar um modelo de ML
- Tratamento simples dos dados
- Exportar modelo
- Criar interface web para uso do modelo
- Deploy do modelo em Flask
Dica de leitura
Neste artigo abordo alguns assuntos já comentados no artigo abaixo, tais quais não serão abordados profundamente neste artigo.
Contexto: Fake news detector
Hoje estamos passando por um período muito conturbado em relação as fake news. A propagação e os efeitos práticos tem sido ‘benéficos’ para aqueles que usam esse tipo de instrumento para manipular pessoas.
No Twitter por exemplo já foram criados vários perfis para detectar outros perfis e sites que propagam esse tipo de notícia.
Casos práticos:
O perfil @slpng_giants_pt foi criado há pouco tempo mas já possui cerca de 237k de seguidores. Ele tem vasculhado sites que propagam fake news e tem cobrado um posicionamento das empresas que vinculam seu anúncios neles.
Outro perfil no Twitter é o @BotSentinel, esse aplicando machine learning tem ajudado a identificar possíveis twitts de perfis que são usuários “robôs”, os quais são usados para disseminar fake news e/ou subir hashtags.
Dado o atual contexto uma aplicação para a verificação de notícias reais ou não faz todo o sentido. Vamos lá!
Mãos a obra
Primeiro vamos importar o dataset sobre fake news. O dataset que consegui para usar nesse tutorial está nesse link disponibilizado na plataforma do Kaggle.
Existem dois arquivos (train e test), dessa forma vamos usar os arquivos para treinar e validar o nosso modelo.
Importando bibliotecas
Importando dados
EDA
Fazendo o reconhecimento dos datasets.
Checando os dataframes info’s.
Checando os valores nulos dos dois dataframes.
Transformando os dados
Concatenando os dados de todas as colunas (menos label) em um só.
Removendo os valores nulls
Criando o modelo preditivo
Criando objeto de vetorização passando o parâmetro ngram e já criando a matriz de treino e teste.
Separando o dataframe de treino em dois (teste e treino)
Criando o modelo de Regressão Logística
Salvando modelo
Salvar o modelo e o ‘vetorizador’ que criamos para ser usado na nossa página web.
Deploy
Para executar o arquivo index.py execute a instalação das bibliotecas contidas no arquivo requirements.txt. (pip install -r requirement.txt)
Obs: Não esqueça de criar o ambiente virtual (virtualenv).
Criando a nossa rota que vai receber o ‘post’ da página para criar o ‘predict.’
Aqui é a parte mais importante do nosso arquivo index.html.
Criamos um forma para receber o request do usuário e na class result recebemos a predição do nosso modelo enviado pelo backend.
Interface web
Esse é o resultado da nossa página que irá receber os requests do usuário.
Conclusão
O sistema funciona bem com o dataset escolhido. Os níveis de assertividade permaneceram interessantes.
Esse projeto poderia ser elevado a um nível mais profundo, uma análise de sentimento das notícias por exemplo já deixaria muito mais robusto, porém é necessário mais tempo fazendo o tratamento dos dados.
Todos os arquivos aqui estão disponibilizados no meu github, espero que esse artigo te ajude no seus estudos ;) !