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:
예제 #3
0
 def test_get_distance_matrix(self):
     distance_matrix,label = processing.get_distance_matrix(raster,vector,'Class')
     assert(label.size== distance_matrix.shape[0])