Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ativFinal.IA

A atividade final da disciplina de Introdução à Inteligência Artificial. O grupo é composto por Luan Motta, Samuel Almeida e Emmanuel Aprígio, e optamos pelo tema Previsão de Risco de Criminalidade, que envolve a predição de criminalidade em diversas cidades do estado do Rio Grande do Sul.


Base de Dados

O dataset utilizado, ou melhor dizendo, os datasets utilizados foram instalados através do site da Secretaria de Segurança - RS (https://ssp.rs.gov.br/dados-abertos), que disponibiliza o acesso livre aos dados de criminalidade como forma de transparência.

Portanto, as bases de dados usadas foram dos anos de 2024 e 2025. O ano de 2026 não foi utilizado devido à incompletude dos dados (Afinal, o ano ainda não acabou).


Metodologia

O projeto traz como requisições o uso de Técnicas de IA, de ramos diferentes dessa esfera do conhecimento.

  1. K-Means (Não-Supervisionado)
  2. Rede Neural (Supervisionado)
  3. Algoritmo Genético

Como usar

Instale as bases de dados dos anos de 2023, 2024 e 2025 no site referido na seção [Banco de Dados]. Depois disso, crie um diretório chamado data na raíz do projeto. Dentro dessa pasta, crie um diretório chamado bulk, e coloque os arquivos extraídos como seg_{ano}.csv. Depois disso, execute src/clean_csv.py e main.py logo em seguida!


Estrutura do Repositório

.
├── main.py                          # Ponto de entrada: orquestra o pipeline completo (init → kmeans → nn)
├── requirements.txt                 # Dependências do projeto com versões mínimas
├── README.md                        # Este arquivo
├── proj_final.pdf                   # Enunciado do trabalho final da disciplina
│
├── data/
│   ├── bulk/                        # CSVs brutos originais (seg_2023.csv, seg_2024.csv, seg_2025.csv)
│   ├── clean/                       # CSVs limpos após processamento (uma linha por vítima)
│   └── rs_shapefile/                # Shapefile dos municípios do RS para geração de mapas geográficos
│       ├── RS_Municipios_2022.shp
│       ├── RS_Municipios_2022.dbf
│       ├── RS_Municipios_2022.shx
│       ├── RS_Municipios_2022.prj
│       └── RS_Municipios_2022.cpg
│
├── src/
│   ├── init.py                      # Carrega CSVs, agrega por cidade/mês e gera features temporais e de lag
│   ├── clean_csv.py                 # Converte CSVs brutos: expande cada ocorrência em uma linha por vítima
│   ├── kmeans.py                    # K-Means para clusterização de municípios por perfil de criminalidade
│   ├── nn.py                        # Rede neural (MLP) para classificação de risco + integração com GA
│   ├── ga.py                        # Algoritmo genético para otimização de thresholds de classificação
│   └── eda.py                       # Análise exploratória: gráficos temporais, geográficos e feature importance
│
├── utils/
│   ├── embellish.py                 # Utilitários de formatação ANSI (cores, estilos) para output no terminal
│   └── fitness_bar.py               # Barra de progresso customizada para acompanhar a evolução do GA
│
└── outputs/                         # Resultados gerados pelo pipeline
    ├── agg_dataset.csv              # Dataset agregado (cidade/mês) com todas as features
    ├── nn_predictions.csv           # Previsões da rede neural (classes real, prevista, probabilidades)
    ├── kmeans_clusters.csv          # Atribuição de cluster por município
    ├── kmeans_stats.csv             # Estatísticas descritivas de cada cluster
    ├── eda_feature_importance.csv   # Importância das features (Random Forest + Permutation)
    ├── cm_predict.png               # Matriz de confusão da rede neural (predict padrão)
    ├── cm_ga.png                    # Matriz de confusão após otimização pelo GA
    ├── roc_curves.png               # Curvas ROC one-vs-rest para cada classe de risco
    ├── kmeans_pca.png               # Visualização PCA 2D dos clusters de municípios
    ├── eda_temporal.png             # Análise temporal: ocorrências por mês, violin plot, média móvel, crescimento
    ├── eda_geographic.png           # Análise geográfica: mapa do RS, distribuição, scatter, top cidades
    ├── eda_feature_importance.png   # Gráfico de importância das features (RF + Permutation)
    ├── eda_real_vs_previsto.png     # Comparação de ocorrências reais vs previstas em 2025
    └── eda_barra_previsto_real.png  # Barras: distribuição de classes reais vs previstas por mês

Dependências (Requirements)

Biblioteca Versão mínima Por quê é utilizada
pandas 2.0 Leitura, manipulação e agregação dos DataFrames de criminalidade (CSV → features)
numpy 1.24 Operações numéricas (normalização, seno/cosseno para sazonalidade, digitize para classes)
matplotlib 3.7 Geração de todos os gráficos: matrizes de confusão, ROC, PCA, mapas, barras, temporais
scikit-learn 1.3 K-Means, MLPClassifier, StandardScaler, RandomForest, métricas (F1, silhouette, ROC/AUC)
geopandas 0.14 Leitura do shapefile dos municípios do RS e plotagem do mapa geográfico na EDA
shapely 2.0 Manipulação de geometrias (centróides) para anotação de cidades no mapa do RS

Resultado Esperado

Mapa, gráfico mostrando perfis de cidades, previsão de risco e análise dos resultados.


About

Esse repositório contêm a atividade final da disciplina de Introdução à Inteligência Artificial ministrada pela Prof. Renata.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages