Repositório contendo projetos e atividades práticas de Inteligência Artificial desenvolvidos durante o curso. Os projetos abrangem desde algoritmos clássicos de busca até redes neurais e aprendizado de máquina.
Este repositório contém 5 atividades práticas que exploram diferentes aspectos da Inteligência Artificial:
- Busca e Otimização: Implementação de algoritmos de busca em mapas 2D
- Grafos: Algoritmos de busca em largura, profundidade e profundidade limitada
- Clustering: Técnicas de agrupamento e visualização de dados
- Classificação: Algoritmos KNN e Naive Bayes
- Deep Learning: Redes neurais MLP para classificação
Arquivos: caça_tesouro.py, limp.py
Implementação de um algoritmo de busca em um mapa 2D (7x7) para encontrar um tesouro.
Características:
- Mapa representado como matriz com paredes (#), espaços vazios (.), início (S) e tesouro (T)
- Algoritmo de backtracking para encontrar o caminho até o tesouro
- Rastreamento de posições visitadas para evitar loops
- Contagem de passos e visualização do caminho percorrido
Autores: Alex Insel (RA: 21008278), João Pedro Giaretta (RA: 23008717), Thiago Luiz Fossa (RA: 23010116)
Como executar:
cd ATV1
python3 caça_tesouro.pyFunção de limpeza de dados para filtragem de datasets de saúde cardiovascular.
Filtros aplicados:
- Idade: 10.000 - 30.000 dias
- Altura: 120 - 220 cm
- Peso: 30 - 200 kg
- Pressão arterial sistólica: 90 - 250 mmHg
- Pressão arterial diastólica: 60 - 150 mmHg
Arquivo: busca_largura_profundidade_limitada.py
Implementação e comparação de três algoritmos clássicos de busca em grafos:
-
Busca em Largura (BFS) 🌊
- Explora o grafo nível por nível
- Garante o caminho mais curto
- Utiliza estrutura de fila (FIFO)
-
Busca em Profundidade (DFS) 🔍
- Explora o grafo em profundidade primeiro
- Utiliza estrutura de pilha (LIFO)
- Pode encontrar caminhos mais longos
-
Busca em Profundidade Limitada (DLS) 🎯
- DFS com limite de profundidade
- Útil para evitar loops infinitos
- Balanceamento entre BFS e DFS
Funcionalidades:
- Geração aleatória de grafos com parâmetros configuráveis
- Visualização gráfica dos grafos e caminhos encontrados
- Medição de tempo de execução para cada algoritmo
- Comparação de desempenho
Dependências:
networkx: Manipulação de grafosmatplotlib: Visualizaçãocollections: Estruturas de dados
Como executar:
cd ATV2
python3 busca_largura_profundidade_limitada.pyParâmetros configuráveis:
v = 100 # Número de vértices
k = 3 # Número médio de arestas por nó
limite = 5 # Limite de profundidade para DLSArquivos: agrupamento.py, agrupamento_comentado.py, agrupamento_v1.py, NN/
Análise e agrupamento de dados utilizando múltiplas técnicas:
Datasets Utilizados:
- Iris Dataset: Dataset clássico de flores
- TMDB Movies: Dados de filmes do Kaggle
Técnicas de Pré-processamento:
- StandardScaler: Normalização padrão
- PowerTransformer (Yeo-Johnson): Transformação de potência para dados assimétricos
Algoritmos de Clustering:
- K-Means
- Hierarchical Clustering (Linkage)
- Bisecting K-Means
Métricas de Avaliação:
- Silhouette Score: Avalia a qualidade dos clusters
Visualizações:
- Pairplots: Relações entre variáveis
- Dendrogramas: Clustering hierárquico
- Scatter plots: Distribuição dos clusters
Aplicação web completa para treinamento e visualização de redes neurais.
Arquitetura:
- Backend (
NN/backend/nn.py): FastAPI + PyTorch - Frontend (
NN/frontend/): HTML + JavaScript + Plotly + Cytoscape
Funcionalidades:
- Treinamento de redes neurais para previsão de tokens
- Visualização em tempo real:
- Gráfico de perda (loss) durante o treinamento
- Estrutura da rede neural
- Atualização de pesos
- Interface web interativa
- WebSocket para comunicação em tempo real
Componentes Técnicos:
- Tokenização com GPT-2
- Embeddings de palavras
- Camadas ocultas com ativação ReLU
- Otimização com Adam
- CrossEntropyLoss
Como executar:
cd ATV3/NN/backend
pip install torch transformers fastapi uvicorn
python3 nn.py
# Acesse http://localhost:8000 no navegadorComo usar o agrupamento:
cd ATV3
pip install pandas matplotlib seaborn scikit-learn scipy kagglehub
python3 agrupamento.pyArquivos: knn.ipynb, naiveBayes.ipynb
Implementação e análise de algoritmos de classificação usando o Forest Cover Type Dataset.
Previsão do tipo de cobertura florestal baseado em variáveis cartográficas.
Variáveis Contínuas:
- Elevation (Elevação)
- Aspect (Orientação)
- Slope (Inclinação)
- Horizontal_Distance_To_Hydrology (Distância horizontal à hidrologia)
- Vertical_Distance_To_Hydrology (Distância vertical à hidrologia)
- Horizontal_Distance_To_Roadways (Distância horizontal às estradas)
- Hillshade_9am (Sombreamento às 9h)
- Hillshade_Noon (Sombreamento ao meio-dia)
- Hillshade_3pm (Sombreamento às 15h)
- Horizontal_Distance_To_Fire_Points (Distância horizontal a pontos de incêndio)
Classes: 7 tipos diferentes de cobertura florestal
Análise Exploratória:
- Histogramas por classe
- Análise de correlação
- Visualização de distribuições
- PCA para redução de dimensionalidade
Otimização de Hiperparâmetros:
- GridSearchCV para encontrar o melhor K
- Teste de diferentes métricas de distância
- Cross-validation
Métricas de Avaliação:
- Acurácia
- Precision, Recall, F1-Score
- Matriz de confusão
- Classification Report
Implementações:
- GaussianNB: Para variáveis contínuas
- MultinomialNB: Para dados de contagem
- Pipeline completo com preprocessamento
Pipeline:
Pipeline([
('scaler', StandardScaler()),
('classifier', GaussianNB())
])Como executar:
cd ATV4
jupyter notebook knn.ipynb
# ou
jupyter notebook naiveBayes.ipynbArquivos: mlp.ipynb, knn.ipynb, requirements.txt
Aplicação de redes neurais e KNN ao Cardiovascular Disease Dataset.
Previsão de doenças cardiovasculares baseado em dados clínicos e de estilo de vida.
Variáveis Contínuas:
age_years: Idade em anosheight: Altura em cmweight: Peso em kgap_hi: Pressão arterial sistólicaap_lo: Pressão arterial diastólica
Variáveis Categóricas/Binárias:
gender: Gênero (1: feminino, 2: masculino)cholesterol: Nível de colesterol (1: normal, 2: acima do normal, 3: muito acima do normal)gluc: Nível de glicose (1: normal, 2: acima do normal, 3: muito acima do normal)smoke: Fumante (0: não, 1: sim)alco: Consumo de álcool (0: não, 1: sim)active: Atividade física (0: não, 1: sim)
Variável Target:
cardio: Presença de doença cardiovascular (0: não, 1: sim)
Arquitetura:
- Camadas de entrada configuráveis
- Múltiplas camadas ocultas
- Função de ativação ReLU
- Dropout para regularização
- Camada de saída com sigmoid/softmax
Pré-processamento:
- Limpeza de dados usando função
limp()da ATV1 - Normalização com StandardScaler
- Tratamento de valores ausentes
- Balanceamento de classes
Treinamento:
- Otimização com Adam ou SGD
- Early stopping
- Validação cruzada
- Análise de overfitting
Métricas:
- Acurácia
- ROC-AUC
- Matriz de confusão
- Curva de aprendizado
Aplicação do algoritmo KNN ao mesmo dataset com:
- Otimização de K
- Análise de diferentes métricas de distância
- Comparação com MLP
Como executar:
cd ATV5
pip install -r requirements.txt
jupyter notebook mlp.ipynb
# ou
jupyter notebook knn.ipynb- Python 3.8 ou superior
- pip (gerenciador de pacotes Python)
- Jupyter Notebook (para arquivos .ipynb)
# Clone o repositório
git clone https://github.com/JONTK123/Projetos_IA.git
cd Projetos_IA
# Instale as dependências da ATV5 (inclui a maioria das bibliotecas)
pip install -r ATV5/requirements.txt
# Dependências adicionais para ATV2
pip install networkx
# Dependências adicionais para ATV3/NN
pip install torch transformers fastapi uvicorn websocketsATV1:
pip install pandasATV2:
pip install networkx matplotlibATV3:
pip install pandas matplotlib seaborn scikit-learn scipy kagglehub
# Para a rede neural:
pip install torch transformers fastapi uvicorn websocketsATV4 e ATV5:
pip install numpy pandas matplotlib seaborn scikit-learn plotly kagglehub# Criar ambiente virtual
python3 -m venv venv
# Ativar ambiente virtual
# No Linux/Mac:
source venv/bin/activate
# No Windows:
venv\Scripts\activate
# Instalar dependências
pip install -r ATV5/requirements.txt# Navegue até o diretório da atividade
cd ATV1
# Execute o script
python3 caça_tesouro.py# Inicie o Jupyter Notebook
jupyter notebook
# Ou use JupyterLab
jupyter lab
# Navegue até o arquivo desejado e abra# Navegue até o backend
cd ATV3/NN/backend
# Execute o servidor
python3 nn.py
# Abra o navegador e acesse
# http://localhost:8000- Python 3.8+: Linguagem principal
- JavaScript: Frontend da aplicação de NN
- HTML/CSS: Interface web
- scikit-learn: Algoritmos clássicos de ML
- KNN, Naive Bayes, K-Means
- Métricas e validação
- Pré-processamento
- PyTorch: Deep Learning
- Redes neurais personalizadas
- Otimização e treinamento
- Transformers: Processamento de linguagem natural
- Tokenização com GPT-2
- Matplotlib: Gráficos básicos
- Seaborn: Visualizações estatísticas
- Plotly: Gráficos interativos
- Cytoscape.js: Visualização de redes
- Pandas: Manipulação de dataframes
- NumPy: Operações numéricas
- SciPy: Algoritmos científicos
- FastAPI: Framework web moderno
- Uvicorn: Servidor ASGI
- WebSocket: Comunicação em tempo real
- NetworkX: Manipulação e análise de grafos
- Kaggle Hub: Download de datasets
- sklearn.datasets: Datasets clássicos (Iris, etc.)
- Alex Insel - RA: 21008278
- João Pedro Giaretta - RA: 23008717
- Thiago Luiz Fossa - RA: 23010116
Contribuições de estudantes do curso de Inteligência Artificial.
Projetos_IA/
│
├── ATV1/
│ ├── caça_tesouro.py # Algoritmo de busca em mapa 2D
│ └── limp.py # Função de limpeza de dados
│
├── ATV2/
│ └── busca_largura_profundidade_limitada.py # BFS, DFS, DLS
│
├── ATV3/
│ ├── agrupamento.py # Clustering com múltiplos algoritmos
│ ├── agrupamento_comentado.py # Versão comentada
│ ├── agrupamento_v1.py # Versão alternativa
│ ├── Atividade.pdf # Descrição da atividade
│ └── NN/
│ ├── backend/
│ │ └── nn.py # Backend FastAPI + PyTorch
│ └── frontend/
│ ├── index.html # Interface web
│ └── script.js # Lógica do frontend
│
├── ATV4/
│ ├── knn.ipynb # KNN para Forest Cover Type
│ └── naiveBayes.ipynb # Naive Bayes para classificação
│
├── ATV5/
│ ├── mlp.ipynb # MLP para doenças cardiovasculares
│ ├── knn.ipynb # KNN para o mesmo dataset
│ └── requirements.txt # Dependências do projeto
│
└── README.md # Este arquivo
Contribuições são bem-vindas! Para contribuir:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/NovaFeature) - Commit suas mudanças (
git commit -m 'Adiciona nova feature') - Push para a branch (
git push origin feature/NovaFeature) - Abra um Pull Request
Este projeto é desenvolvido para fins educacionais como parte de atividades acadêmicas.
Para dúvidas ou sugestões sobre o projeto, abra uma issue no repositório.
Este repositório demonstra a aplicação prática de conceitos fundamentais de IA:
- ✅ Algoritmos de busca e otimização
- ✅ Estruturas de dados e grafos
- ✅ Aprendizado de máquina supervisionado e não supervisionado
- ✅ Redes neurais e deep learning
- ✅ Pré-processamento e análise de dados
- ✅ Visualização de dados e resultados
- ✅ Desenvolvimento de aplicações web com IA
- Documentação Scikit-learn
- Documentação PyTorch
- Documentação NetworkX
- Documentação FastAPI
- Kaggle Datasets
Desenvolvido com ❤️ para aprendizado de Inteligência Artificial