Sofia é um Software Orientado por Inteligência Artificial para Auxílio ao Pré-diagnóstico de Crianças de 0 a 4 Anos com Manifestações Comportamentais do Transtorno do Espectro Autista (TEA). O aplicativo mobile CAD (computer aided design) é 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! 💜
Este projeto implementa uma Rede Neural Multicamadas (MLP) para auxiliar no pré-diagnóstico de crianças de 0 a 4 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.
-
API Flask: O projeto inclui uma API Flask 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:
python main.py
- A API estará rodando em
http://127.0.0.1:5000
A API possui os seguintes endpoints:
Type | Path | Obs. |
---|---|---|
POST | /respostas | Envia as respostas preenchidas do Q-Chat 10. |
GET | /resultado | Retorna o resultado do processamento da rede neural. |
- URI:
/respostas
- Método:
POST
- Request body:
application/JSON
- Exemplo de Entrada:
{
"responses": [
{
"Case_No": 1,
"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",
"Who_completed_the_test": "family member",
"Class_ASD_Traits": ""
}
]
}
- URI:
/resultado
- 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.