{"id":31579186,"url":"https://github.com/madsondeluna/mvp_pucrio_data_analytics_and_machine_learning","last_synced_at":"2026-05-03T10:36:59.336Z","repository":{"id":316838179,"uuid":"1065050767","full_name":"madsondeluna/mvp_pucrio_data_analytics_and_machine_learning","owner":"madsondeluna","description":"MVP referente a sprint de Machine Learning \u0026 Analytics (40530010056_20250_01) da Pós-Graduação em Data Science and Analytics da PUC-Rio.","archived":false,"fork":false,"pushed_at":"2025-09-28T18:22:24.000Z","size":16798,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-05T20:53:37.810Z","etag":null,"topics":["comparative-analysis","data-analytics","data-science","machine-learning-algorithms","postgraduate-course","python","pytorch","scikit-learn"],"latest_commit_sha":null,"homepage":"https://colab.research.google.com/drive/1--VBTH2w0f66WHhe33Wdgm40o6nHTX__?usp=sharing","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/madsondeluna.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-27T01:29:36.000Z","updated_at":"2025-09-28T18:22:27.000Z","dependencies_parsed_at":"2025-09-27T08:20:40.337Z","dependency_job_id":null,"html_url":"https://github.com/madsondeluna/mvp_pucrio_data_analytics_and_machine_learning","commit_stats":null,"previous_names":["madsondeluna/mvp_pucrio_data_analytics_and_machine_learning"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/madsondeluna/mvp_pucrio_data_analytics_and_machine_learning","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madsondeluna%2Fmvp_pucrio_data_analytics_and_machine_learning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madsondeluna%2Fmvp_pucrio_data_analytics_and_machine_learning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madsondeluna%2Fmvp_pucrio_data_analytics_and_machine_learning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madsondeluna%2Fmvp_pucrio_data_analytics_and_machine_learning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/madsondeluna","download_url":"https://codeload.github.com/madsondeluna/mvp_pucrio_data_analytics_and_machine_learning/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madsondeluna%2Fmvp_pucrio_data_analytics_and_machine_learning/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278981518,"owners_count":26079640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["comparative-analysis","data-analytics","data-science","machine-learning-algorithms","postgraduate-course","python","pytorch","scikit-learn"],"created_at":"2025-10-05T20:47:49.199Z","updated_at":"2025-10-08T17:10:30.763Z","avatar_url":"https://github.com/madsondeluna.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# MVP II - Machine Learning \u0026 Analytics (40530010056_20250_01)\n\n**Curso:** Data Science \u0026 Analytics – PUC-Rio\n\n**Autor:** Madson Aragão\n\n---\n\n![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54) ![NumPy](https://img.shields.io/badge/numpy-%23013243.svg?style=for-the-badge\u0026logo=numpy\u0026logoColor=white) ![Pandas](https://img.shields.io/badge/pandas-%23150458.svg?style=for-the-badge\u0026logo=pandas\u0026logoColor=white) ![Matplotlib](https://img.shields.io/badge/Matplotlib-%23ffffff.svg?style=for-the-badge\u0026logo=Matplotlib\u0026logoColor=black) ![scikit-learn](https://img.shields.io/badge/scikit--learn-%23F7931E.svg?style=for-the-badge\u0026logo=scikit-learn\u0026logoColor=white) ![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge\u0026logo=github\u0026logoColor=white)![Google Colab](https://img.shields.io/badge/Google%20Colab-%23F9A825.svg?style=for-the-badge\u0026logo=googlecolab\u0026logoColor=white) \n\n---\n\n\n#### 🟡 [Acesse o notebook no Google Colab](https://colab.research.google.com/drive/1--VBTH2w0f66WHhe33Wdgm40o6nHTX__?usp=sharing)\n\n#### ⚪️ [Acesse o notebook no GitHub](https://github.com/madsondeluna/mvp_pucrio_data_analytics_and_machine_learning/blob/main/mvp_pucrio_data_analytics.ipynb)\n\n#### 🔵 [Dataset](https://github.com/madsondeluna/mvp_pucrio_data_analytics_and_machine_learning/blob/main/data/data.csv) \n\n#### 🟢 [Modelos salvos a partir deste estudo](https://github.com/madsondeluna/mvp_pucrio_data_analytics_and_machine_learning/tree/main/modelos-pre-treinados)\n\n\n## Visão Geral do Projeto\n\nEste projeto tem como objetivo principal validar a viabilidade de classificar dados extraídos de células mamárias em processos de alteração celular (benignas vs. malignas) utilizando técnicas clássicas de análise de dados em Python e preparar o dataset para modelos de Machine Learning. Exploramos a relevância biológica das variáveis, avaliamos o potencial diagnóstico dos modelos e comparamos o desempenho de diferentes algoritmos de classificação.\n\n## II. Contexto e Importância da Base de Dados\n\nUtilizamos o **Breast Cancer Wisconsin (Diagnostic) Data Set**, disponível no UCI Machine Learning Repository. Esta base contém **569 amostras** de tumores mamários, rotuladas como **benigno (B)** ou **maligno (M)**, e **30 variáveis numéricas** que descrevem características morfológicas dos núcleos celulares, extraídas de imagens digitalizadas.\n\nA importância desta base de dados reside no seu potencial para:\n\n- **Diagnóstico precoce:** Auxiliar radiologistas na identificação rápida de tumores malignos.\n- **Padronização de laudos:** Reduzir a subjetividade na avaliação humana.\n- **Suporte à pesquisa clínica:** Correlacionar características de imagem com resultados terapêuticos.\n\nAs variáveis incluem medidas de raio, textura, perímetro, área, suavidade, compacidade, concavidade, pontos côncavos, simetria e dimensão fractal, capturadas em três escalas: média (`_mean`), erro-padrão (`_se`), e \"pior\" valor (`_worst`). Alterações nestas características são biologicamente relevantes para diferenciar células benignas de malignas.\n\n## III. Exploração e Pré-processamento dos Dados\n\nAntes de modelar, realizamos as seguintes etapas:\n\n1.  **Carregamento e Seleção:** Importamos os dados diretamente de um repositório GitHub para reprodutibilidade. Removemos colunas irrelevantes (`id`, `Unnamed: 32`).\n2.  **Análise Exploratória Visual:**\n    *   Verificamos a distribuição das classes (357 benignos, 212 malignos), observando um leve desbalanceamento.\n    *   Utilizamos mapas de calor para analisar a correlação entre as variáveis, identificando alta multicolinearidade entre alguns atributos (ex: `radius_mean`, `perimeter_mean`, `area_mean`).\n    *   Plotagens de violino e pairplots foram usadas para visualizar a distribuição das variáveis por classe e identificar atributos com bom poder discriminatório (`area_mean`, `concave points_mean`, etc.).\n3.  **Tratamento da Multicolinearidade:** Removemos variáveis altamente correlacionadas (com |r| \u003e= 0.9) para simplificar o modelo e evitar problemas em algoritmos sensíveis a isso. Foram removidos `radius_mean`, `perimeter_mean`, `concavity_mean`, `radius_se`, `perimeter_se`, `radius_worst`, `perimeter_worst`.\n4.  **Padronização:** Aplicamos `StandardScaler()` para normalizar as variáveis numéricas, garantindo que todas as features contribuam igualmente em algoritmos baseados em distância ou gradiente.\n5.  **Divisão Treino/Teste:** Separamos os dados em 75% para treino e 25% para teste (`random_state=10` para reprodutibilidade), garantindo que a distribuição das classes fosse preservada nesta divisão.\n\n## IV. Modelagem e Avaliação\n\nEste é um problema de **classificação supervisionada binária**. Treinamos e avaliamos quatro modelos de classificação populares:\n\n-   **K-Nearest Neighbors (KNN)**\n-   **Random Forest (RF)**\n-   **Support Vector Machine (SVM)**\n-   **XGBoost**\n\nUtilizamos **validação cruzada (10 folds)** no conjunto de treino para uma avaliação robusta do desempenho do modelo durante a fase de treinamento e seleção de hiperparâmetros (no caso do KNN, a validação cruzada foi usada para selecionar o melhor `k=7`). As métricas finais foram calculadas no conjunto de **teste padronizado**.\n\n### Métricas de Avaliação\n\nAvaliamos os modelos com as seguintes métricas:\n\n-   **Acurácia:** Proporção de classificações corretas.\n-   **MCC (Matthews Correlation Coefficient):** Medida robusta de correlação entre a predição e o valor real, útil em classes desbalanceadas. Auxiliando na vififcação da presença de overfitting, onde valores acima de 0.7 tendem a ter menor potencial de desequilíbrio. \n-   **AUC-ROC:** Área sob a curva Receiver Operating Characteristic, indica a capacidade do modelo de discriminar entre as classes. \n-   **Matriz de Confusão:** Apresenta True Positives (VP), True Negatives (VN), False Positives (FP) e False Negatives (FN). Em diagnóstico médico, minimizar FN (classificar maligno como benigno) é crucial.\n-   **Precisão (Precision):** Proporção de identificações positivas que foram realmente corretas.\n-   **Recall (Sensibilidade):** Proporção de casos positivos reais que foram corretamente identificados.\n\n### Resultados Comparativos no Conjunto de Teste\n\n| Modelo        | Acurácia | MCC    | AUC-ROC | VP | VN | FP | FN | Precisão (Benigno) | Recall (Benigno) | Precisão (Maligno) | Recall (Maligno) |\n|---------------|----------|--------|---------|----|----|----|----|--------------------|------------------|--------------------|------------------|\n| KNN           | 0.9580   | 0.9090 | 0.9968  | 48 | 89 | 2  | 4  | 0.9570             | 0.9780           | 0.9600             | 0.9231           |\n| Random Forest | 0.9860   | 0.9705 | 0.9987  | 52 | 89 | 2  | 0  | 1.0000             | 0.9780           | 0.9630             | 1.0000           |\n| SVM           | 0.9860   | 0.9705 | 1.0000  | 52 | 89 | 2  | 0  | 1.0000             | 0.9780           | 0.9630             | 1.0000           |\n| XGBoost       | 0.9720   | 0.9396 | 0.9985  | 50 | 89 | 2  | 2  | 0.9780             | 0.9780           | 0.9615             | 0.9615           |\n\n*As métricas VP, VN, FP, FN referem-se à classe 'Maligno'.*\n\n## V. Principais Achados e Conclusões\n\nA análise comparativa revela que todos os modelos apresentaram alto desempenho na classificação de tumores mamários, com acurácia superior a 95% e AUC-ROC acima de 0.99.\n\n-   **Modelos de Destaque:** **Random Forest** e **SVM** se destacaram por atingirem a maior acurácia e MCC, e, fundamentalmente, por apresentarem **zero Falsos Negativos (FN = 0)** no conjunto de teste. Isso significa que eles foram capazes de identificar corretamente todos os casos malignos no teste, o que é um resultado crítico em aplicações médicas. O SVM ainda obteve uma AUC-ROC perfeita excepcional.\n-   **Desempenho Forte:** **XGBoost** também demonstrou um desempenho muito robusto, com métricas elevadas e um número baixo de Falsos Negativos (FN = 2). É uma excelente alternativa, especialmente em cenários onde a escalabilidade e a eficiência computacional são importantes.\n-   **Modelo Base Sólido:** O **KNN**, apesar de ser o modelo com menor desempenho entre os avaliados (FN = 4), ainda assim obteve resultados muito bons, validando a qualidade das features e a abordagem de pré-processamento.\n\nA cuidadosa etapa de pré-processamento, incluindo a análise de correlação e a padronização, foi essencial para o sucesso de todos os modelos.\n\n## VI. Como Usar o Notebook\n\nPara replicar a análise e os resultados deste projeto, siga os passos abaixo:\n\n1.  **Abrir no Google Colab:** Clique no botão \"Open in Colab\" no topo deste README (se disponível) ou faça upload do arquivo `.ipynb` para o Google Colab.\n2.  **Executar as Células:** Execute as células do notebook sequencialmente, de cima para baixo. Certifique-se de que cada célula seja concluída antes de passar para a próxima.\n3.  **Acesso aos Dados:** O notebook carrega os dados diretamente do repositório GitHub, então não é necessário fazer download manual do arquivo CSV.\n4.  **Modelos Pré-Treinados:** Os modelos treinados (KNN, Random Forest, SVM, XGBoost) são salvos no diretório `modelos_pre_treinados` após a execução da seção correspondente. Você também pode baixá-los diretamente do repositório GitHub para uso posterior sem a necessidade de retreinamento.\n\n## VII. Modelos Pré-Treinados\n\nOs modelos finais treinados (.pkl) neste notebook foram salvos e estão disponíveis para download direto no seguinte diretório do repositório GitHub:\n\nhttps://github.com/madsondeluna/mvp_pucrio_data_analytics_and_machine_learning/tree/main/modelos-pre-treinados \n\nVocê pode carregar esses modelos em outro ambiente Python usando a biblioteca `pickle`.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadsondeluna%2Fmvp_pucrio_data_analytics_and_machine_learning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmadsondeluna%2Fmvp_pucrio_data_analytics_and_machine_learning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadsondeluna%2Fmvp_pucrio_data_analytics_and_machine_learning/lists"}