Esempio n. 1
0
 def test_centroid(self):
  
      Xc,yc = load_historical_data(centroid=True,return_X_y=True)
      Xc_file, yc_file= load_historical_data(centroid=True)
      assert(os.path.exists(Xc_file))
      assert(os.path.exists(yc_file))
      assert(Xc.shape[0] == processing.read_vector_values(vector,'Type').shape[0])
Esempio n. 2
0
 def test_zonal_stats(self):
     raster,vector = datasets.load_historical_data()
     copyfile(vector,'/tmp/train.gpkg')
     
     median,amax,std = stats.zonal_stats(raster,'/tmp/train.gpkg',False)
     assert(median.shape == amax.shape == std.shape)
     assert(np.sum(std)<np.sum(median)< np.sum(amax))
Esempio n. 3
0
Compute substract and addition between two raster bands.

"""

##############################################################################
# Import librairies
# -------------------------------------------

from museotoolbox.processing import RasterMath
from museotoolbox import datasets
import numpy as np
##############################################################################
# Load HistoricalMap dataset
# -------------------------------------------

raster, vector = datasets.load_historical_data()

##############################################################################
# Initialize rasterMath with raster
# ------------------------------------

rM = RasterMath(raster)

print(rM.get_random_block())

##########################
# Let's suppose you want compute the difference between blue and green band.
# I suggest you to define type in numpy array to save space while creating the raster!

X = rM.get_random_block()
Esempio n. 4
0
import numpy as np
from museotoolbox import ai
from museotoolbox.datasets import load_historical_data
from museotoolbox.processing import image_mask_from_vector
from osgeo import gdal

import os
import tempfile

tempdir = tempfile.mkdtemp()
import shutil

from sklearn.ensemble import RandomForestClassifier

raster, vector = load_historical_data(low_res=True)
X, y, g = load_historical_data(return_X_y_g=True, low_res=True)
param_grid = dict(n_estimators=[1, 10])
classifier = RandomForestClassifier()
image_mask_from_vector(vector, raster, os.path.join(tempdir, 'mask.tif'))


class TestStats(unittest.TestCase):
    def test_superLearner(self):

        n_cv = 2
        for tf in [True, False]:
            verbose = tf + 1
            model = ai.SuperLearner(classifier,
                                    param_grid=param_grid,
                                    n_jobs=1,
Esempio n. 5
0
##############################################################################
# Import librairies
# -------------------------------------------

from museotoolbox.ai import SequentialFeatureSelection
from museotoolbox.cross_validation import LeavePSubGroupOut
from museotoolbox import datasets
from sklearn.ensemble import RandomForestClassifier
from sklearn import metrics
import numpy as np
##############################################################################
# Load HistoricalMap dataset
# -------------------------------------------

X, y, g = datasets.load_historical_data(return_X_y_g=True, low_res=True)

##############################################################################
# Create CV
# -------------------------------------------

LSGO = LeavePSubGroupOut(valid_size=0.8,
                         n_repeats=2,
                         random_state=12,
                         verbose=False)
##############################################################################
# Initialize Random-Forest and metrics
# --------------------------------------

classifier = RandomForestClassifier(random_state=12, n_jobs=1)
Esempio n. 6
0
50% for each class.

"""

##############################################################################
# Import librairies
# -------------------------------------------

from museotoolbox.cross_validation import RandomStratifiedKFold
from museotoolbox import datasets, processing

##############################################################################
# Load HistoricalMap dataset
# -------------------------------------------

raster, vector = datasets.load_historical_data(low_res=True)
field = 'Class'
y = processing.read_vector_values(vector, field)

##############################################################################
# Create CV
# -------------------------------------------

SKF = RandomStratifiedKFold(n_splits=2,
                            n_repeats=2,
                            random_state=12,
                            verbose=False)
for tr, vl in SKF.split(X=None, y=y):
    print(tr, vl)

###############################################################################
Esempio n. 7
0
"""

##############################################################################
# Import librairies
# -------------------------------------------
from museotoolbox.ai import SuperLearner
from museotoolbox.cross_validation import RandomStratifiedKFold
from museotoolbox.charts import PlotConfusionMatrix
from museotoolbox import datasets
from sklearn.ensemble import RandomForestClassifier

##############################################################################
# Load HistoricalMap dataset
# -------------------------------------------

X, y = datasets.load_historical_data(low_res=True, return_X_y=True)

##############################################################################
# Create CV
# -------------------------------------------
RSKF = RandomStratifiedKFold(n_splits=2, random_state=12, verbose=False)

##############################################################################
# Initialize Random-Forest
# ---------------------------

classifier = RandomForestClassifier()

##############################################################################
# Start learning
# ---------------------------
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 24 12:03:31 2019

@author: nicolas
"""
# -*- coding: utf-8 -*-
import unittest
import os
import numpy as np

from museotoolbox.datasets import load_historical_data
from museotoolbox import cross_validation
from museotoolbox import processing

raster, vector = load_historical_data()
X, y, g = load_historical_data(return_X_y_g=True)
distance_matrix = processing.get_distance_matrix(raster, vector)
n_class = len(np.unique(y, return_counts=True)[1])
smallest_class = np.min(np.unique(y, return_counts=True)[1])


class TestCV(unittest.TestCase):
    def test_loo(self):
        for split in [False, 1, 2, 5]:

            cv = cross_validation.LeaveOneOut(n_repeats=split,
                                              random_state=split,
                                              verbose=split)
            if split == False:
                assert (cv.get_n_splits(X, y) == np.min(
Esempio n. 9
0
Create a raster mask from vector.

"""

##############################################################################
# Import librairies
# -------------------------------------------

from museotoolbox.processing import image_mask_from_vector
from museotoolbox.datasets import load_historical_data

##############################################################################
# Load HistoricalMap dataset
# -------------------------------------------

raster, vector = load_historical_data()

##############################################################################
# Rasterize vector
# -----------------------------------------

##############################################################################
# Default, invert is False, it means only polygons will be kept (the rest is set to nodata)
image_mask_from_vector(vector, raster, '/tmp/mask.tif', invert=False)

##############################################################################
# If invert is set to True, it means polygons will be set to nodata
image_mask_from_vector(vector, raster, '/tmp/maskInvert.tif', invert=True)

#######################
# Plot result
This example shows how to make a Spatial Leave-One-SubGroup-Out.

"""

##############################################################################
# Import librairies
# -------------------------------------------
import numpy as np
from museotoolbox.cross_validation import SpatialLeaveOneSubGroupOut
from museotoolbox import datasets, processing
##############################################################################
# Load HistoricalMap dataset
# -------------------------------------------

_, centroid = datasets.load_historical_data(low_res=True, centroid=True)
raster, vector = datasets.load_historical_data(low_res=True)

field = 'Class'

##############################################################################
# Extract label ('Class' field) and groups ('uniquefid' field)
# Compute distanceMatrix with centroid (one point per group)

X, y, groups = processing.extract_ROI(raster, vector, field, 'uniquefid')
distance_matrix, distance_label = processing.get_distance_matrix(
    raster, centroid, 'uniquefid')

##############################################################################
# Create CV
# -------------------------------------------
Esempio n. 11
0
This example shows how to make a Leave One Out for each class.

"""

##############################################################################
# Import librairies
# -------------------------------------------

from museotoolbox.cross_validation import LeaveOneOut
from museotoolbox import datasets

##############################################################################
# Load HistoricalMap dataset
# -------------------------------------------

X,y = datasets.load_historical_data(return_X_y=True,low_res=True)

##############################################################################
# Create CV
# -------------------------------------------
LOOPC = LeaveOneOut(random_state=8,verbose=False)
for tr,vl in LOOPC.split(X=None,y=y):
    print(tr,vl)

###############################################################################
# .. note::
#    Split is made to generate each fold

# Show label

for tr,vl in LOOPC.split(X=None,y=y):