GithubHelp home page GithubHelp logo

isaacmrsmile / mapa-preditivo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fnaghetini/mapa-preditivo

0.0 0.0 0.0 150.67 MB

Utilização de Técnicas de Aprendizado de Máquina Supervisionado para Mapeamento Geológico: Um Estudo de Caso na Região de Diamantina, Minas Gerais, Brasil

License: MIT License

Jupyter Notebook 98.41% Python 0.39% Julia 1.20%

mapa-preditivo's Introduction

Logo UFMG

Utilização de Técnicas de Aprendizado de Máquina Supervisionado para Mapeamento Geológico: Um Estudo de Caso na Região de Diamantina, Minas Gerais, Brasil

Trabalho de Conclusão de Curso - Geologia / IGC / UFMG

Orientandos: Franco Naghetini & Guilherme Silveira

Orientadores: Pedro Casagrande & Iago Costa

Aspectos Gerais

O objetivo deste trabalho é solucionar uma tarefa supervisionada de classificação multinomial 𝑇 que consiste em predizer as unidades litoestratigráficas 𝑦 em um determinado domínio 𝐷 como função de sensores remotos X e com base em anotações 𝑦(𝑖)=𝑓(𝑥(𝑖)) interpretadas pelos geólogos responsáveis pelo mapeamento da área.

O produto final é um mapa geológico preditivo 1:25.000 da área de interesse que pode ser utilizado como um meio de reconciliação entre os dados/interpretações de campo e os sensores remotos. Nesse sentido, as inconsistências entre o mapa geológico e o mapa preditivo podem fornecer insights e orientar futuras campanhas de mapeamento na região.

O fluxo de trabalho deste projeto pode ser consultado aqui.

Oito classificadores foram comparados entre si, sendo eles:

  • Regressão Logística (RL)
  • Decision Tree (DT)
  • Naive Bayes (NB)
  • K-Nearest Neighbors (KNN)
  • Support Vector Machines (SVM)
  • Random Forest (RF)
  • XGBoost (XGB)
  • Multilayer Perceptrons (MLP)

Dentre eles, os modelos XGBoost e Random Forest apresentaram as melhores performances com relação às métricas avaliadas. Os scores de validação cruzada para esses modelos são apresentados abaixo:

Métricas XGBoost Random Forest
F1-score 0.77 0.78
Precisão 0.78 0.78
Recall 0.77 0.78
Acurácia 0.77 0.78

Estrutura do Repositório

.
├───data
│   ├───raster
│   ├───data_nb1.csv
│   ├───data_nb2.csv
│   ├───data_nb3.csv
│   ├───test.csv
│   └───train.csv
├───figures
│   ├───notebook1
│   ├───notebook2
│   ├───notebook3
│   └───notebook4
├───functions
│   ├───Custom_Cleaning.py
│   ├───Custom_Export.py
│   ├───Custom_Prediction.py
│   ├───Custom_Preprocessing.py
│   ├───Custom_Stats.py
│   ├───Custom_Train_Test_Split.py
│   ├───Custom_Validation.py
│   └───functions.pdf
├───output
│   ├───points
│   └───rasters
├───shp
│   ├───boundary.shp
│   └───lithology.shp
├───workflow
│   └───workflow.pdf
├───1-exploratory_data_analysis.ipynb
├───2-predictive_litho_map.ipynb
├───3-model_explanation.ipynb
├───4-geospatial_issues.jl
├───LICENSE
└───README.md
  • data contém os dados utilizados nos quatro notebooks e os dados de treino e teste. Os sensores remotos processados em SIRGAS2000 UTM Zona 23S com resolução de 62.5 m x 62.5 m estão na subpasta raster.

  • figures contém todos os gráficos e mapas gerados nos quatro notebooks em formato .png.

  • functions contém todas as funções auxiliares utilizadas nos notebooks. As funções auxiliares adotam o padrão lowerCamelCase para diferenciá-las das funções nativas e externas do Python. A única exceção é a classe auxiliar MaskedPCA que, por sua vez, adota o padrão UpperCamelCase. Toda vez que uma função auxiliar é utilizada em um dos notebooks, haverá um hiperlink que aponta para o arquivo .py fonte dessa função. Clique aqui para visualizar o mapa mental das funções auxiliares.

  • output contém os mapas obtidos durante o projeto como pontos e rasters.

  • shp contém o mapa geológico de campo e o polígono da área deste projeto, ambos em formato .shp.

  • workflow contém o fluxo de trabalho adotado neste projeto.

  • 1-exploratory_data_analysis.ipynb contém as etapas de limpeza e análise exploratória dos dados.

  • 2-predictive_litho_map.ipynb abrange as etapas de pré-processamento e modelagem dos dados. Os mapas geológicos preditivos são gerados aqui.

  • 3-model_explanation.ipynb apresenta os resultados da interpretação do classificador XGBoost com o framework SHAP.

  • 4-geospatial_issues.jl apresenta uma análise interativa simples de fenômenos comuns em dados geoespaciais.

Instruções

Python

Grande parte do trabalho (três primeiros notebooks) foi desenvolvida em linguagem Python, em ambiente Jupyter Notebook. Caso deseje executar os notebooks localmente, aconselhamos a instalação do Python via Anaconda. A vantagem desse distribuidor é que grande parte das bibliotecas utilizadas no trabalho são automaticamente instaladas em sua máquina.

Todas as bibliotecas utilizadas, bem como suas respectivas versões são apresentadas ao final deste documento, em Versões. As bibliotecas que não são instaladas automaticamente junto ao Anaconda apresentam um "*".

Opcionalmente, é possível visualizar os notebooks no próprio GitHub ou, ainda, executá-los no ambiente Google Colab. Entretanto, nem todos os recursos presentes estarão habilitados em ambos os casos.

Julia

Apenas o quarto notebook foi desenvolvido em linguagem Julia, em ambiente Pluto. Para executar esse notebook localmente, primeiro instale Julia 1.6. Em seguida, no Julia REPL, execute os seguintes comandos para instalar o Pluto:

julia> using Pkg
julia> Pkg.add("Pluto")

Em seguida, execute o Pluto:

julia> using Pluto
julia> Pluto.run()

Nota: Não se preocupe com as versões das bibliotecas Julia utilizadas. Como o Pluto apresenta seu próprio gerenciador de pacotes, ao abrir o notebook pela primeira vez, todos os pacotes necessários serão automaticamente instalados nas versões apropriadas (isso pode demorar alguns minutos!).

Importante: A versão do Pluto deve ser igual ou maior à 0.16.0. Caso queira consultar sua versão, no Julia REPL, digite:

julia> using Pkg
julia> Pkg.status()

Informações Complementares

Sistema de Referência

  • EPSG: 31983
  • Projeção: UTM
  • Zona: 23S
  • Datum: SIRGAS2000
  • Unidade: m
  • Elipsoide: GRS 1980
  • Resolução: 62.5 m x 62.5 m
  • Extensão: (xmin = 634163.67, ymin = 7969052.06, xmax = 640038.70, ymax = 7983240.00)

Unidades Litoestratigráficas

ID Código Unidade RGB Hexadecimal
1 MAcgg Complexo Granito-Gnáissico (255,115,223) #ff73df
2 PP3csbg Formação Barão de Guaicuí (190,210,255) #bed2ff
3 PP34b Formação Bandeirinha (230,76,0) #e64d00
4 PP4esjc Formação São João da Chapada (255,170,0) #ffaa00
5 PP4esb Formação Sopa Brumadinho (255,255,115) #ffff73
6 PP4egm Formação Galho do Miguel (76,230,0) #4de600

Dicionário de Variáveis

Variável Unidade Fonte Descrição
X m - Coordenada X
Y m - Coordenada Y
GT nT/m Biblioteca UFMG Gradiente total
K % Biblioteca UFMG Potássio
TH ppm Biblioteca UFMG Tório
U ppm Biblioteca UFMG Urânio
CT μR/h Biblioteca UFMG Contagem total
U_K - Biblioteca UFMG Razão urânio / potássio
TH_K - Biblioteca UFMG Razão tório / potássio
U_TH - Biblioteca UFMG Razão urânio / tório
MDT m Biblioteca UFMG Modelo digital de terreno
B02 - INPE Landsat 8 Sensor OLI - AZUL (0.450 - 0.515 μm)
B03 - INPE Landsat 8 Sensor OLI - VERDE (0.525 - 0.600 μm)
B04 - INPE Landsat 8 Sensor OLI - VERMELHO (0.630 - 0.680 μm)
B06 - INPE Landsat 8 Sensor OLI - INFRAVERMELHO MÉDIO (1.560 - 1.660 μm)
B07 - INPE Landsat 8 Sensor OLI - INFRAVERMELHO MÉDIO (2.100 - 2.300 μm)
TARGET - Mapa Estágio Supervisionado (2018) Código numérico das unidades litoestratigráficas
COD - Mapa Estágio Supervisionado (2018) Acrônimo das unidades litoestratigráficas

Versões

Nota: As bibliotecas que não são instaladas automaticamente junto ao Anaconda foram destacadas com o símbolo "*".

Licença

Este repositório encontra-se sob a licença MIT:

"Uma licença permissiva, curta e simples com condições que exigem apenas a preservação de direitos
autorais e avisos de licença. Trabalhos licenciados, modificações e trabalhos maiores podem ser
distribuídos em termos diferentes e sem código-fonte."

Para mais detalhes, consulte o arquivo de licença.

mapa-preditivo's People

Contributors

fnaghetini avatar guiasilveira avatar iagoslc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.