Skip to content

gabriel-sa-dev/Esteira-LLM-AI

Repository files navigation

Esteira de Aprendizado de Maquina - Wine Quality

Pipeline completo de Machine Learning para classificacao da qualidade de vinhos (tintos e brancos) com base em propriedades fisico-quimicas. Utiliza o dataset Wine Quality do UCI Machine Learning Repository.

O projeto inclui um notebook Jupyter com toda a esteira e uma interface web interativa (Streamlit) com chat em linguagem natural para explorar os dados.


Dataset

Informacao Valor
Fonte UCI ML Repository - Wine Quality
Amostras 6.497 (1.599 tintos + 4.898 brancos)
Features 11 propriedades fisico-quimicas + tipo de vinho
Target Qualidade do vinho (nota 0-10, agrupada em 3 classes)
Valores nulos Nenhum
Autores P. Cortez, A. Cerdeira, F. Almeida, T. Matos, J. Reis (2009)

Variaveis

Feature Descricao Media Min Max
fixed acidity Acidez fixa (g/L) 7.22 3.80 15.90
volatile acidity Acidez volatil (g/L) 0.34 0.08 1.58
citric acid Acido citrico (g/L) 0.32 0.00 1.66
residual sugar Acucar residual (g/L) 5.44 0.60 65.80
chlorides Cloretos (g/L) 0.06 0.01 0.61
free sulfur dioxide SO2 livre (mg/L) 30.53 1.00 289.00
total sulfur dioxide SO2 total (mg/L) 115.74 6.00 440.00
density Densidade (g/cm3) 0.995 0.987 1.039
pH pH 3.22 2.72 4.01
sulphates Sulfatos (g/L) 0.53 0.22 2.00
alcohol Teor alcoolico (%) 10.49 8.00 14.90
quality Nota de qualidade 5.82 3 9

Etapas da Esteira

1. Carregamento e Exploracao

  • Combinacao dos datasets de vinho tinto e branco em um unico DataFrame
  • Adicao da coluna wine_type (0=tinto, 1=branco)
  • Verificacao de tipos, nulos e distribuicao

2. Estatisticas Descritivas

  • Medidas de tendencia central (media, mediana), dispersao (desvio padrao, IQR) e forma (assimetria, curtose)
  • Matriz de correlacao entre todas as variaveis
  • Boxplots de todas as features

3. Transformacao em Colunas

  • Criacao de classes: A qualidade original (3-9) foi agrupada em 3 classes:
    • Baixa (3-5): 2.384 amostras (36,7%)
    • Media (6): 2.836 amostras (43,7%)
    • Alta (7-9): 1.277 amostras (19,6%)
  • Padronizacao: StandardScaler aplicado a todas as features numericas (media=0, desvio=1)

4. Transformacao em Linhas

  • Duplicatas removidas: 1.177 linhas (18,1% do total)
  • Outliers removidos: 271 linhas via metodo IQR com fator 3.0
  • Total apos limpeza: 5.049 amostras (de 6.497 originais)

5. Divisao dos Dados

Divisao estratificada para manter a proporcao das classes em cada subconjunto:

Conjunto Amostras Percentual
Treinamento 3.029 60%
Validacao 1.010 20%
Teste 1.010 20%

6. Treinamento do Modelo

  • Algoritmo: Random Forest Classifier
  • Hiperparametros: 200 arvores, profundidade maxima 15, min_samples_split=5, min_samples_leaf=2
  • Motivo da escolha: Robusto para classificacao multi-classe, baixo risco de overfitting, permite interpretacao via importancia de features

7. Resultados

Metrica Validacao Teste
Acuracia 60,79% 62,38%

Matriz de Confusao (Teste):

Real \ Predito Baixa Media Alta
Baixa (3-5) 241 125 4
Media (6) 89 307 47
Alta (7-9) 9 106 82

Relatorio por Classe (Teste):

Classe Precision Recall F1-Score
Baixa (3-5) 0.71 0.65 0.68
Media (6) 0.57 0.69 0.63
Alta (7-9) 0.62 0.42 0.50

8. Predicao

  • Predicao com amostra real do conjunto de teste (com probabilidades por classe)
  • Predicao com vinho hipotetico simulado (novos dados passando pelo mesmo pipeline de transformacao)

Principais Achados

  • Alcohol e o fator mais importante para determinar a qualidade do vinho, seguido por volatile acidity e density
  • Vinhos de alta qualidade tendem a ter maior teor alcoolico e menor acidez volatil
  • A classe Media (6) e a mais dificil de classificar corretamente, pois compartilha caracteristicas com Baixa e Alta
  • Vinhos brancos dominam o dataset (75,4%), mas a distribuicao de qualidade e semelhante entre os tipos
  • O desbalanceamento das classes (Alta tem apenas 19,6%) impacta o recall da classe Alta (42%)

Como Reproduzir

Pre-requisitos

  • Python 3.10+
  • pip

Passo a passo

  1. Clone o repositorio:

    git clone <URL_DO_REPOSITORIO>
    cd trabalho-IA
  2. Instale as dependencias:

    pip install pandas numpy matplotlib seaborn scikit-learn jupyter streamlit plotly
  3. Opcao A — Notebook Jupyter (esteira completa):

    jupyter notebook esteira_ml_wine_quality.ipynb

    Execute todas as celulas sequencialmente: Menu > Cell > Run All

  4. Opcao B — Interface Web (exploracao interativa):

    streamlit run app.py

    Acesse http://localhost:8501 no navegador


Estrutura do Repositorio

trabalho-IA/
├── README.md                           # Documentacao do projeto
├── esteira_ml_wine_quality.ipynb       # Notebook com a esteira completa
├── app.py                              # Interface web Streamlit
├── winequality-red.csv                 # Dataset vinho tinto (1.599 amostras)
├── winequality-white.csv               # Dataset vinho branco (4.898 amostras)
└── winequality.names                   # Descricao original do dataset

Tecnologias

  • Python 3.12 — Linguagem principal
  • pandas / numpy — Manipulacao e analise de dados
  • scikit-learn — Machine Learning (Random Forest, metricas, preprocessing)
  • matplotlib / seaborn — Visualizacoes no notebook
  • Streamlit / Plotly — Interface web interativa

Referencia

P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis. Modeling wine preferences by data mining from physicochemical properties. Decision Support Systems, Elsevier, 47(4):547-553, 2009.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors