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! 💜
Ficou interessado? Veja mais no nosso pitch de apresentação da SOFIA, ou acesse o nosso site. 💜
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).
O projeto usa as seguintes bibliotecas:
- numpy
- keras
- sklearn
- pandas
- joblib
O projeto consiste em várias partes:
-
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. -
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. -
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 oOneHotEncoder
para variáveis categóricas e normaliza a coluna ‘Age_Mons’. A função retorna os dados pré-processados. -
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. -
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.
-
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 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.
- Python
- VSCode
- Clone o repositório para o seu computador:
git clone https://github.com/mandis-ncs/api-flask.git
- Abra o projeto pelo VSCode e execute o comando pelo terminal:
pip install -r requirements.txt
- Navegue até o diretório
app
e execute:
uvicorn main:app --reload
- Aguardar o fim do processamento do modelo MLP:
-
A API estará rodando em
http://127.0.0.1:8000
. -
A documentação da API pode ser acessada pela rota:
http://127.0.0.1:8000/docs
.
- 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
docker run -p 8000:8000 --name sofia-fastapi aasjunior/sofia-fastapi:1.0
- O projeto clonado do Github também pode ser dockerizado pelo seguindo comando:
docker build -t sofia-fastapi:1.0 .
docker run -p 8000:8000 --name sofia-fastapi sofia-fastapi:1.0
O container criado no Docker receberá o nome de sofia-fastapi
.
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. |
- 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": ""
}
}
- URI:
/resultado/{qchat_id}
- Método:
GET
- Exemplo de Saída:
{
"result": "1"
}
You can see more about us in our profile:
Esta é uma iniciativa acadêmica, sendo assim, não possui todas as funcionalidades e características de uma aplicação real.