pular para o conteúdo
todos os projetos

Machine learning / 2025

PsyPredict

Comparar modelos é também investigar o dado, o pré-processamento e os limites da avaliação.

contexto
Experimento com dados de questionário
atuação
Código e notebooks de exploração
estado
Estudo exploratório; pipeline incompleto
stack
Python / scikit-learn / pandas / SHAP
ver código

o que é

Os notebooks exploram um questionário de saúde mental no trabalho, com treino de classificadores e ajuste de hiperparâmetros. O alvo é a resposta treatment, não um diagnóstico clínico nem a necessidade de tratamento.

o problema

Um score só pode ser interpretado junto do alvo, do split e das transformações que o produziram. Aqui, os outputs salvos permitem examinar a comparação, mas os dados necessários para repeti-la não estão versionados.

as restrições

Dados externos
Os notebooks esperam archive/survey.csv e arquivos intermediários. O notebook de pré-processamento tem um FileNotFoundError salvo.
Escopo exploratório
As respostas do questionário não estabelecem diagnóstico, eficácia ou validade clínica.

a arquitetura

Percurso dos notebooks de saúde mental.

  1. Questionário

    notebooks/eda*

    Inspeção de colunas, nulos e valores do alvo.

  2. Pré-processamento

    notebooks/02*

    Limpeza, codificação de categorias e split.

  3. Avaliação

    notebooks/03* · 04*

    Random Forest, regressão logística e GridSearchCV.

  4. Explicabilidade

    notebooks/05*

    TreeExplainer; gráfico termina em erro de dimensões.

Streamlit, FastAPI e src/ tratam churn de telefonia. Eles não integram este percurso de saúde mental.

decisões técnicas

  1. Dois classificadores no mesmo split

    por quê
    O notebook treina Random Forest e regressão logística sobre os mesmos arquivos de treino e teste.
    em vez de
    Avaliar somente um classificador.
    o preço
    A regressão logística emite aviso de convergência e não recebe escala. Os scores não isolam a qualidade dos algoritmos.
  2. Registrar avaliação nos notebooks

    por quê
    Relatórios por classe, ROC-AUC e busca de parâmetros ficam junto do código que os produziu.
    em vez de
    Publicar somente o score final.
    o preço
    Outputs salvos podem envelhecer. Reproduzi-los exige dados e ambiente compatíveis.

limites e aprendizados

Explicabilidade incompleta

A chamada shap.summary_plot(shap_values[1], X_sample) termina em AssertionError de dimensões. O artefato não demonstra um gráfico SHAP funcional.

Dois domínios no mesmo repositório

Os notebooks são sobre saúde mental, enquanto as interfaces e módulos Python tratam churn. O arquivo do dashboard está vazio.

estado atual

O resultado é um estudo exploratório inspecionável. Os outputs versionados registram ROC-AUC de 0,79158 para o Random Forest ajustado em 252 registros de teste. Esses valores não foram reproduzidos nesta auditoria e não demonstram validade clínica.

próximas questões

  • Separar os domínios de churn e saúde mental.
  • Versionar o ambiente, documentar a origem dos dados e revisar pré-processamento antes do split.
  • Reavaliar o baseline com escala e corrigir as dimensões no SHAP.

evidência

notebooks/04_hyperparameter_tuning_mental_health.ipynb

Fitting 5 folds for each of 108 candidates, totalling 540 fits
Best ROC-AUC score (CV): 0.8193298109672427
Test set ROC-AUC: 0.791580008823344
Excerto do output versionado, inspecionado em 1 de outubro de 2026; não é uma nova execução.

fontes e revisão

a seguir: tbook