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 # ------------------------------------------- # n_splits will be the number of the least populated class SLOSGO = SpatialLeaveOneSubGroupOut(distance_thresold=100, distance_matrix=distance_matrix, distance_label=distance_label, random_state=12) ############################################################################### # .. note:: # Split is made to generate each fold SLOSGO.get_n_splits(X, y, groups)
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( np.unique(y, return_counts=True)[-1])) else:
def test_get_distance_matrix(self): distance_matrix,label = processing.get_distance_matrix(raster,vector,'Class') assert(label.size== distance_matrix.shape[0])