Coder Social home page Coder Social logo

ruiduobao / randomforest-classification Goto Github PK

View Code? Open in Web Editor NEW

This project forked from florianbeyer/randomforest-classification

0.0 1.0 0.0 308 KB

Classifying remote sensing data with random forest

License: GNU General Public License v3.0

Python 4.82% Jupyter Notebook 95.18%

randomforest-classification's Introduction

RandomForest-Classification

This script is for classification of remote sensing multi-band images using shape files as input for training and validation.

I am using Anaconda (Python 3.8) and the following packages:

  • GDAL package from OSGEO.
  • OGR
  • scikit learn
  • (pandas/numpy/matplotlib/seaborn/...)

Please cite my script, if you use it:

Beyer, Florian, et al. “Multisensor Data to Derive Peatland Vegetation Communities Using a Fixed-Wing Unmanned Aerial Vehicle.” International Journal of Remote Sensing, vol. 00, no. 00, Taylor & Francis, 2019, pp. 1–23, doi:10.1080/01431161.2019.1580825.

NEW RELEASE!!! Maptor 1.4beta

Finally, we are pleased to inform you, that our brand new software Maptor has now been released as a beta version (2020-11-11).

the software is able to apply random forest classification and regression on remote sensing data

Maptor

Please download and test Maptor 1.4beta here!

Files

  • Classifcation_script.ipynb - jupyter notebook with example outputs
  • Classifcation_script.py - python script

preparing data and adapting script

  1. prepare remote sensing image in tif format

  2. training and validation data as (GIS) shape files (Polygones)
    IMPORTANT!!! -> classes as integer numbers (do not use class names as strings)
    IMPORTANT!!! -> the attribute name as well as the number of every class have to be the same in the training and vaildation shape file
    IMPORTANT!!! -> image and shapes must have the same CRS (coordinate reference system e.g. UTM33N WGS84)

  3. Change/Adapt all information in Section: INPUT INFORMATION

  • Choose the number of trees for the Random Forest (default = 500)
  • Choose how many CPU-cores you want to use or processing (n_cores = -1 -> uses all available cores)
  • Define directories of the input image and the traing/validation.shp
  • Define the name of the attribute
  • Define target directories for classification.tif and report.txt

EXAMPLE:

This example uses a 14 bands remote sensing dataset and 8 classes as training and validation. Finaly, you get a tif file as your classification image and a report.txt as well as many outputs in your python console! During the process you will also see several plots...

report.txt

Random Forest Classification
Processing: 2020-05-07 14:14:53.766020
-------------------------------------------------
PATHS:
Image: R:\OwnCloud\WetScapes\2020_04_23_HüMo\huemo2018_14bands_tif.tif
Training shape: R:\OwnCloud\WetScapes\2020_04_23_HüMo\cal.shp
Vaildation shape: R:\OwnCloud\WetScapes\2020_04_23_HüMo\val.shp
      choosen attribute: class
Classification image: R:\OwnCloud\WetScapes\2020_04_23_HüMo\results\HueMo2018_14bands_class_.tif
Report text file: R:\OwnCloud\WetScapes\2020_04_23_HüMo\results\results_txt_.txt
-------------------------------------------------
Image extent: 4721 x 5224 (row x col)
Number of Bands: 14
---------------------------------------
TRAINING
Number of Trees: 500
11781 training samples
training data include 8 classes: [1 2 3 4 5 6 7 8]
--------------------------------
TRAINING and RF Model Diagnostics:
OOB prediction of accuracy is: 99.53314659197012%
Band 1 importance: 0.07422191283709235
Band 2 importance: 0.03138862335047076
Band 3 importance: 0.01232741814805193
Band 4 importance: 0.06724784717595128
Band 5 importance: 0.11994202487099442
Band 6 importance: 0.050658933643359196
Band 7 importance: 0.06543997268021191
Band 8 importance: 0.27292836274508814
Band 9 importance: 0.12041183266036815
Band 10 importance: 0.030058880237602194
Band 11 importance: 0.036830909145992574
Band 12 importance: 0.01929961375159746
Band 13 importance: 0.04317281009998762
Band 14 importance: 0.056070858653231984
predict     1     2     3    4    5     6    7   8    All
truth                                                    
1        3558     0     0    0    0     0    0   0   3558
2           0  1105     0    0    0     0    0   0   1105
3           0     0  1941    0    0     0    0   0   1941
4           0     0     0  207    0     0    0   0    207
5           0     0     0    0  298     0    0   0    298
6           0     0     0    0    0  4231    0   0   4231
7           0     0     0    0    0     0  346   0    346
8           0     0     0    0    0     0    0  95     95
All      3558  1105  1941  207  298  4231  346  95  11781
------------------------------------
VALIDATION
8058 validation pixels
validation data include 8 classes: [1 2 3 4 5 6 7 8]
col_0     1    2     3    4    5     6    7   8   All
row_0                                                
1      3278    0    16    0    0     0    0   0  3294
2         0  413    29    0    0     0    0   0   442
3         0   77  1228    0    0     0    0   0  1305
4         0    0     0  105    0     0    0   0   105
5         0    0     1    0  118     0    0   0   119
6         0    0     0    0    0  2449    0   0  2449
7         0    0     0   10    0     0  246   0   256
8         0   14     0    3    0     0    0  71    88
All    3278  504  1274  118  118  2449  246  71  8058
              precision    recall  f1-score   support

           1       1.00      1.00      1.00      3294
           2       0.82      0.93      0.87       442
           3       0.96      0.94      0.95      1305
           4       0.89      1.00      0.94       105
           5       1.00      0.99      1.00       119
           6       1.00      1.00      1.00      2449
           7       1.00      0.96      0.98       256
           8       1.00      0.81      0.89        88

    accuracy                           0.98      8058
   macro avg       0.96      0.95      0.95      8058
weighted avg       0.98      0.98      0.98      8058

OAA = 98.138495904691 %

example data

in the test.zip you find an example files for training and validation. If you want to test the script and you do not have any data, please contact me and I share an image with you.

randomforest-classification's People

Watchers

 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.