Este projeto analisa como o consumo de café influencia a qualidade do sono dos clientes, utilizando técnicas de análise exploratória de dados, visualizações avançadas e modelos de Machine Learning.
Empresa (fictícia): Health&Life Analytics
Dataset: synthetic_coffee_health_10000
Objetivo principal: prever a qualidade do sono (Sleep_Quality) com base em hábitos e características dos clientes.
-
Análise Exploratória (EDA):
Entender o perfil dos clientes e padrões nos dados (distribuições, correlações, outliers, dados faltantes etc.). -
Insights de Negócio:
Identificar relações entre:- consumo de café e qualidade do sono;
- estresse, atividade física e sono;
- perfis de clientes com maior risco de baixa qualidade de sono.
-
Modelo Preditivo:
Construir e avaliar modelos de classificação para preverSleep_Quality, comparando diferentes algoritmos e selecionando o melhor.
O dataset contém 10.000 registros, com as seguintes variáveis principais:
| Variável | Tipo | Descrição |
|---|---|---|
ID |
Integer | Identificador único |
Age |
Integer | Idade (18–80 anos) |
Gender |
Categorical | Gênero (Male/Female/Other) |
Country |
Categorical | País de residência |
Coffee_Intake |
Float | Consumo diário em xícaras (0–10) |
Caffeine_mg |
Float | Cafeína diária em mg |
Sleep_Hours |
Float | Média de horas de sono (3–10h) |
Sleep_Quality |
Categorical | TARGET – Poor/Fair/Good/Excellent |
BMI |
Float | Índice de Massa Corporal (15–40) |
Heart_Rate |
Integer | Frequência cardíaca (50–110 bpm) |
Stress_Level |
Categorical | Nível de estresse (Low/Medium/High) |
Physical_Activity_Hours |
Float | Atividade física semanal (0–15h) |
Health_Issues |
Categorical | Condições de saúde |
Occupation |
Categorical | Ocupação principal |
Smoking |
Boolean | Fumante (0/1) |
Alcohol_Consumption |
Boolean | Consome álcool (0/1) |
Fonte original do dataset: Kaggle – Coffee and Health Dataset.
- Python 3.8+
- Pandas – Manipulação e limpeza de dados
- NumPy – Operações numéricas
- Matplotlib & Seaborn – Visualizações
- Scikit-learn – Modelagem de Machine Learning
- Joblib – Persistência de modelos e transformadores
coffee-sleep-analysis/
├─ analise_cafe_sono.ipynb # Notebook principal com EDA, modelos e conclusões
├─ requirements.txt # Dependências do projeto
├─ README.md # Este arquivo
├─ data/
│ ├─ inputs/
│ │ └─ synthetic_coffee_health_10000(in).csv # Dataset de entrada
│ └─ outputs/
│ ├─ figures/ # Gráficos gerados na análise
│ ├─ models/ # Modelos treinados e encoders salvos (.pkl)
│ └─ reports/ # Textos de insights e recomendações (.txt)
└─ .gitignore # Configuração para ignorar arquivos locais (venv, outputs, etc.)
Obs.: as pastas dentro de
data/outputs/são criadas automaticamente pelo notebook, caso ainda não existam.
- Python 3.8 ou superior
gitinstalado (opcional, para clonar o repositório)- Navegador + Jupyter Notebook ou VSCode com suporte a notebooks
- (Opcional, mas recomendado) ambiente virtual (
venv)
git clone https://github.com/abraaopinto/coffee-sleep-analysis.git
cd coffee-sleep-analysisSe preferir, também é possível baixar o .zip direto pelo GitHub e extrair a pasta.
Windows (PowerShell / CMD):
python -m venv venv
venv\Scripts\activateLinux / macOS:
python3 -m venv venv
source venv/bin/activateCom o ambiente virtual ativado:
pip install -r requirements.txtVerifique se o arquivo:
data/inputs/synthetic_coffee_health_10000(in).csv
existe.
Se não existir:
- Crie as pastas
data/inputs/(se necessário). - Coloque o arquivo
synthetic_coffee_health_10000(in).csvdentro dedata/inputs/.
Se estiver usando Jupyter:
jupyter notebookDepois:
- Abra o arquivo
analise_cafe_sono.ipynb. - Execute as células em ordem (
Run All), ou seção por seção:- Carregamento de dados
- Análise Exploratória
- Visualizações comparativas
- Preparação dos dados e modelagem
- Avaliação dos modelos
- Geração de relatórios e recomendações
Dica: o próprio notebook contém uma célula inicial com:
!pip install -qq -r "./requirements.txt"Isso ajuda principalmente em ambientes como Google Colab.
De forma resumida, o notebook segue o fluxo abaixo:
-
Carregamento e inspeção inicial
- Leitura do CSV a partir de
data/inputs/. - Visualização de dimensões, amostras, tipos de dados, valores nulos e duplicados.
- Leitura do CSV a partir de
-
Análise Exploratória (EDA)
- Estatísticas descritivas de colunas numéricas e categóricas.
- Distribuições (histogramas, boxplots).
- Frequência de categorias.
- Matriz de correlação entre variáveis numéricas.
-
Visualizações e comparações
- Relação entre consumo de café (
Coffee_Intake,Caffeine_mg) e:- horas de sono (
Sleep_Hours); - qualidade do sono (
Sleep_Quality); - níveis de estresse.
- horas de sono (
- Segmentações por:
- gênero (
Gender); - faixa etária;
- nível de atividade física;
- nível de estresse.
- gênero (
- Relação entre consumo de café (
-
Engenharia de Atributos
- Criação de novas features (ex.: razões envolvendo cafeína e BMI, indicadores de sono adequado, índices combinados de saúde etc.).
- Transformação de variáveis categóricas (codificação) para uso em modelos.
-
Modelagem Preditiva
- Separação em treino e teste.
- Treinamento de diferentes modelos de classificação (por exemplo: Random Forest, Gradient Boosting, Regressão Logística).
- Cálculo de métricas como acurácia, matriz de confusão e relatório de classificação.
-
Seleção do Melhor Modelo
- Comparação das métricas entre modelos.
- Escolha do modelo com melhor desempenho no conjunto de teste.
- Análise de importância de features (quando aplicável).
-
Geração de Relatórios e Artefatos
- Salvamento de:
- gráficos em
data/outputs/figures/; - dataset processado em
data/outputs/models/(arquivo.csv); - modelo vencedor e encoders em
data/outputs/models/(.pkl); - arquivos
.txtcom:- principais descobertas;
- recomendações de negócio.
- gráficos em
- Salvamento de:
Após executar todo o notebook, você deverá encontrar:
-
Gráficos (PNG) em:
data/outputs/figures/
-
Modelo treinado (pickle, melhor modelo):
data/outputs/models/modelo_melhor_<timestamp>.pkl
-
Dataset processado:
data/outputs/models/dataset_processado_<timestamp>.csv
-
Outros artefatos:
- Encoders de variáveis categóricas (
label_encoders_<timestamp>.pkl) - Encoder do alvo (
target_encoder_<timestamp>.pkl) - Scaler (
scaler_<timestamp>.pkl), quando aplicável
- Encoders de variáveis categóricas (
-
Relatórios em texto:
data/outputs/reports/principais_descobertas_<timestamp>.txtdata/outputs/reports/recomendacoes_negocio_<timestamp>.txt
- Há relação clara entre níveis mais altos de cafeína e pior qualidade de sono?
- Como o nível de estresse afeta tanto as horas de sono quanto a qualidade percebida?
- Grupos com maior atividade física tendem a relatar melhor qualidade de sono?
- Quais variáveis mais contribuem para a previsão de
Sleep_Qualitysegundo o modelo treinado?
Algumas ideias de continuidade para o projeto:
- Testar outros algoritmos (XGBoost, LightGBM, redes neurais).
- Implementar validação cruzada e busca de hiperparâmetros (GridSearchCV/RandomizedSearchCV).
- Criar uma API ou aplicação (por exemplo, Streamlit) para que usuários possam simular cenários.
- Explorar explicabilidade de modelos (SHAP, LIME) para aprofundar os insights.
Projeto desenvolvido por Abraão Pinto como parte de um desafio de análise de dados e Machine Learning.