Skip to content

mandis-ncs/api-flask

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sofia Mobile 💜

Sofia é um Software Orientado por Inteligência Artificial para Auxílio ao Pré-diagnóstico de Crianças de 0 a 2 Anos com Manifestações Comportamentais do Transtorno do Espectro Autista (TEA). O aplicativo mobile CAD (Computer-aided Diagnosis) é destinado ao auxílio de profissionais da saúde na triagem e identificação de sinais do TEA. 💜 Nosso Objetivo 💜 é promover a acessibilidade ao diagnóstico precoce de TEA! 💜

ilustracao

Ficou interessado? Veja mais no nosso pitch de apresentação da SOFIA, ou acesse o nosso site. 💜

Rede Neural MLP Para Predição de TEA 💜

Este projeto implementa uma Rede Neural Multicamadas (MLP) para auxiliar no pré-diagnóstico de crianças de 0 a 2 anos com manifestações comportamentais do Transtorno do Espectro Autista (TEA).

Dependências 💜

O projeto usa as seguintes bibliotecas:

  • numpy
  • keras
  • sklearn
  • pandas
  • joblib

Como funciona 💜

O projeto consiste em várias partes:

  1. Criação do modelo: A função create_model cria um modelo de rede neural com duas camadas ocultas de 64 neurônios cada, e uma camada de saída com um neurônio. A função recebe como parâmetro a forma da entrada dos dados.

  2. Validação cruzada: A função cross_validate_model realiza a validação cruzada do modelo, dividindo os dados em conjuntos de treinamento e teste. A função retorna as acurácias obtidas em cada divisão.

  3. Pré-processamento de novos dados: A função preprocess_new_data recebe novos dados, realiza a codificação de rótulos para variáveis categóricas, aplica o OneHotEncoder para variáveis categóricas e normaliza a coluna ‘Age_Mons’. A função retorna os dados pré-processados.

  4. Previsão a partir de um arquivo CSV: A função predict_from_csv recebe o caminho de um arquivo CSV, carrega os dados, pré-processa os dados e faz previsões usando o modelo treinado.

  5. Treinamento do modelo final: O script principal carrega e pré-processa os dados, realiza a validação cruzada, treina o modelo final em todos os dados e salva o modelo treinado.

  6. FastAPI: O projeto inclui uma API que recebe respostas via POST, salva as respostas em um arquivo CSV e retorna previsões via GET. O resultado da predição é retornado com valor '1' para casos positivos de TEA ou valor '0' para casos negativos, indicando ausência de sinais de TEA.

Base de treinamento 💜

Base de dados: Autism screening data for toddlers
Tarefa: Classificação
Número de Instâncias: 1054
Autor: Fadi Fayez Thabtah

A base de dados utilizada no projeto teve seu conjunto de dados coletados com base no Q-Chat-10, um questionário utilizado para avaliar traços de Transtorno do Espectro Autista (TEA) em crianças pequenas. Aqui estão os principais detalhes:

  • O Q-Chat-10 é composto por 10 perguntas.
  • As respostas possíveis para cada pergunta são: “Sempre”, “Normalmente”, “Às vezes”, “Raramente” e “Nunca”.
  • Os valores das respostas são mapeados para “1” ou “0” no conjunto de dados.
  • Para as perguntas de 1 a 9 (A1-A9), se a resposta foi “Às vezes”, “Raramente” ou “Nunca”, é atribuído o valor “1” à pergunta.
  • Para a pergunta 10 (A10), se a resposta foi “Sempre”, “Normalmente” ou “Às vezes”, é atribuído o valor “1”.
  • Se a soma dos pontos para todas as dez perguntas for maior que 3, há um potencial de traços de TEA. Caso contrário, não há traços de TEA observados.

Iniciando o projeto 💜

Requisitos de Software
  • Python
  • VSCode

Instalação

  1. Clone o repositório para o seu computador:
git clone https://github.com/mandis-ncs/api-flask.git
  1. Abra o projeto pelo VSCode e execute o comando pelo terminal:
pip install -r requirements.txt
  1. Navegue até o diretório app e execute:
uvicorn main:app --reload
  1. Aguardar o fim do processamento do modelo MLP:
aplicação iniciada com sucesso
  1. A API estará rodando em http://127.0.0.1:8000.

  2. A documentação da API pode ser acessada pela rota: http://127.0.0.1:8000/docs.

Instalação via Docker

  1. Caso tenha o Docker instalado, pode baixar a versão do projeto disponível no Docker hub pelo comando abaixo:
docker pull aasjunior/sofia-fastapi:1.0
Para executar a aplicação:
docker run -p 8000:8000 --name sofia-fastapi aasjunior/sofia-fastapi:1.0
  1. O projeto clonado do Github também pode ser dockerizado pelo seguindo comando:
docker build -t sofia-fastapi:1.0 .
Para executar a aplicação:
docker run -p 8000:8000 --name sofia-fastapi sofia-fastapi:1.0

O container criado no Docker receberá o nome de sofia-fastapi.

Endpoints 💜

A API possui os seguintes endpoints:

Type Path Obs.
POST /respostas Envia as respostas preenchidas do Q-Chat 10. Retorna o id da requisição (qchat_id).
GET /resultado/{qchat_id} Retorna o resultado do processamento da rede neural.

Respostas

  • URI: /respostas
  • Método: POST
  • Request body: application/JSON
  • Exemplo de Entrada:
{
  "A1": 0,
  "A2": 0,
  "A3": 0,
  "A4": 0,
  "A5": 0,
  "A6": 0,
  "A7": 1,
  "A8": 1,
  "A9": 0,
  "A10": 1,
  "Age_Mons": 28,
  "Sex": "f",
  "Ethnicity": "black",
  "Jaundice": "yes",
  "Family_mem_with_ASD": "no",
  "Class_ASD_Traits": ""
}
  • Saída:
{
    "status": "received",
    "qchat_id": 1,
    "data": {
        "A1": 0,
        "A2": 0,
        "A3": 0,
        "A4": 0,
        "A5": 0,
        "A6": 0,
        "A7": 1,
        "A8": 1,
        "A9": 0,
        "A10": 1,
        "Age_Mons": 28,
        "Sex": "f",
        "Ethnicity": "middle eastern",
        "Jaundice": "yes",
        "Family_mem_with_ASD": "no",
        "Class_ASD_Traits": ""
    }
}

Resultado

  • URI: /resultado/{qchat_id}
  • Método: GET
  • Exemplo de Saída:
{
    "result": "1"
}

Tecnologias 💜

Android

Python FastAPI TensorFlow Keras Docker

Nosso Time AJA 💜

You can see more about us in our profile:

Aviso

Esta é uma iniciativa acadêmica, sendo assim, não possui todas as funcionalidades e características de uma aplicação real.