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])
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))
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()
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,
############################################################################## # 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)
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) ###############################################################################
""" ############################################################################## # 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(
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 # -------------------------------------------
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):