Olá, meu nome é Pedro Henrique, e esse é meu repositório referente ao projeto final do Bootcamp de Data Science Aplicada promovido pela Alura.
Esse projeto teve como objetivo criar um modelo capaz de prever se um paciente com suspeita de COVID-19 precisará ou não ser internado na UTI levando em consideração apenas os dados obtidos até as duas primeiras horas que o mesmo chega ao local. Para isso foi utilizada uma base de dados disponibilizada pelo Hospital Sírio-Libanês, essa base de dados pode ser encontrada no kaggle.
Os impactos esperados com a criação desse modelo são de um lado conseguir melhorar a logística de recursos do hospital, e o mais importante prever quais são aqueles pacientes que mais necessitam dessa internação, dando a prioridade para quem mais precisará, uma vez que cada leito vago pode significar uma vida salva.

O ano de 2020 começou de uma maneira completamente inesperada, o mundo foi atingido por uma das maiores crises sanitárias da história contemporânea, e uma palavra tomou conta das notícias nos jornais e mídias sociais brasileiras, “Leito”, a superlotação dos hopitais e a falta de leitos se tornou normal em todo o Brasil, nos anos de 2020 e 2021. Diante de uma doença desconhecida, encontrar como identificar seus perigos e as alterações corporais se tornou um desafio para medicina moderna.
Partindo desse problema o projeto teve como ponto de partida analisar dados acerca de resultados de exames de sangue, sinais vitais, gases sanguíneos, grupos de doenças apresentadas pelo paciente, além de informações demográficas do mesmo. A partir disso foi procurado quais as relações de cada variável com a necessidade de um leito, para no final sermos capazes de prever com a maior certeza quem são aqueles que mais necessitam dessa internação.
Neste diretório se encontram os dados utilizados no projeto, esses dados estão dividos em duas pastas:
Este diretório foi destinado as funções utilizadas no projeto, essas foram divididas em 4 arquivos .py dependendo do objetivo das mesmas, são eles:
Aqui foram criados os notebooks onde foram realizadas as análises e criação dos modelos de Machine Learning, foram divididos em dois arquivos .ipynb, são eles:
Neste repositório estão os objetos criados dentro do notebook e salvos em arquivos para serem carregados em outros locais,estes foram organizados em duas pastas:
Diretório com todas as imagens utilizadas no projeto.
Neste diretório experimentei testar diferentes funcionalidades que é possível entre o Rstudio e python. Para isso criei um projeto de um website dentro do Rstudio, e transformei os arquivos .ipynb em .Rmd, após isso configurei o Rstudio para utilizar o mesmo ambiente do anaconda que foi desenvolvido os notebooks originais.
Por fim fiz pequenas mudanças em relação as leituras de dados e importações de funções locais e utilizei o arquivo SearchCV_salvo/random_searchcv para não realizar o processo de otimização de hyperparâmetros novamente.
Comando utilizado para utilizar o python no Rstudio no mesmo ambiente que foi desenvolvido os notebooks pelo jupyter lab 
Comando utilizado para gerar uma cópia dos notebooks no formato .Rmd 
Obs: esses comandos só foram realizados uma vez na hora de iniciar a sessão, depois foram retirados
O resultado final do site pode ser conferido aqui
Após realizar o pré-processamento dos dados e a análise exploratória, foram testados diferentes modelos de Machine Learning, foram eles:
| Modelo | Pacote | Método |
|---|---|---|
| LogisticRegression | sklearn.linear_model | Regressão Logística |
| DecisionTreeClassifier | sklearn.tree | Árvore de decisão |
| RandomForestClassifier | sklearn.ensemble | Ensemble |
| ExtraTreesClassifier | sklearn.ensemble | Ensemble |
| XGBClassifier | pacote xgboost | Ensemble |
| LGBMClassifier | pacote lightgbm | Ensemble |
Entre os modelos testados, os dois com as melhores métricas de ROC AUC foram escolhidos para realizar uma otimização dos hyperparâmetros. Foi levado em conta a média das métricas obtidas em uma validação cruzada pelo método RepeatedStratifiedKFold, realizando 10 validações cruzadas diferentes com 5 divisões no dataset.
Além disso, foram realizadas técnicas de reamostragem e de seleção de variáveis a partir de outro modelo. Os resultados obtidos do modelo final foram:
| Métrica | Média |
|---|---|
| ROC AUC | 0.946 |
| ACURÁCIA | 0.882 |
| PRECISÃO | 0.885 |
| F1-SCORE | 0.882 |
Esse projeto foi realizado utilizando a linguagem Python versão 3.9.6, e os notebooks foram desenvolvidos através da ferramenta jupyter lab dentro de um ambiente criado pela plataforma anaconda, as principais bibliotecas usadas foram: * Pandas versão 1.3.1 : biblioteca rápida e poderosa usada para manipulação de dados * Matplotlib versão 3.1.3 : biblioteca usada para visualização de dados * Seaborn versão 0.11.1 : biblioteca baseada no Matplotlib para visualização de gráficos estatísticos mais complexos * Numpy versão 1.20.2 : biblioteca utilizada para computação matemática * Scikit-learn versão 0.24.2 : biblioteca utilizada na criação de modelos de Machine Learning * Todas as bibliotecas e versões podem ser encontradas no arquivo requirements.txt
Gostaria de deixar o meu agradecimento a Alura por essa oportunidade incrível de participar do bootcamp de Data Science Aplicada, aos instrutores Thiago Santos, Guilherme Silveira, Allan Spadini e Karoline Penteado, que nos acompanharam durante todo o bootcamp. Ao Paulo Vasconcellos, que sempre participou das lives nesse período e trouxe dicas valiosas para melhorar os projetos. Além disso, queria agradecer a todo pessoal do discord e do Scuba team que sempre ajudou quando foi preciso.
https://medium.com/data-hackers/como-selecionar-as-melhores-features-para-seu-modelo-de-machine-learning-faf74e357913
https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc_crossval.html
https://machinelearningmastery.com/k-fold-cross-validation/
https://machinelearningmastery.com/repeated-k-fold-cross-validation-with-python/
https://towardsdatascience.com/5-reasons-why-you-should-use-cross-validation-in-your-data-science-project-8163311a1e79
https://g1.globo.com/sp/sao-paulo/noticia/2020/11/18/pacientes-e-medicos-relatam-falta-de-leitos-de-uti-em-ao-menos-tres-grandes-hospitais-particulares-da-cidade-de-sp.ghtml
https://caiquecoelho.medium.com/um-guia-completo-para-o-pr%C3%A9-processamento-de-dados-em-machine-learning-f860fbadabe1
https://numpy.org/doc/stable/index.html
https://pandas.pydata.org/docs/index.html
https://scikit-learn.org/stable/index.html
https://matplotlib.org/
https://seaborn.pydata.org/