Generate a cross-validation and/or save each fold to a vector file

This example shows how to make a Leave-One-SubGroup-Out and save each fold as a vector file.

Import librairies

from museotoolbox.cross_validation import LeaveOneSubGroupOut
from museotoolbox.processing import extract_ROI
from museotoolbox import datasets

Load HistoricalMap dataset

raster,vector = datasets.load_historical_data(low_res=True)
field = 'Class'
group = 'uniquefid'
X,y,s = extract_ROI(raster,vector,field,group)

Create CV

valid_size = 0.5 # Means 50%
LOSGO = LeaveOneSubGroupOut(verbose=False,random_state=12)

Note

Split is made to generate each fold

LOSGO.get_n_splits(X,y,s)
for tr,vl in LOSGO.split(X,y,s):
    print(tr.shape,vl.shape)

Out:

(2342,) (833,)
(2728,) (447,)

Save each train/valid fold to a vector file (here in polygon type)

vectorFiles = LOSGO.save_to_vector(vector,field,group=group,out_vector='/tmp/LOSGO.gpkg')

for tr,vl in vectorFiles:
    print(tr,vl)

Out:

Warning : This function generates vector files according to your vector.
        The number of features may differ from the number of pixels used in classification.
        If you want to save every ROI pixels in the vector, please use processing.sample_extraction before.
/tmp/LOSGO_train_0.gpkg /tmp/LOSGO_valid_0.gpkg
/tmp/LOSGO_train_1.gpkg /tmp/LOSGO_valid_1.gpkg

The sampling can be different in vector point or polygon. So you can generate each centroid of a pixel that contains the polygon.

from museotoolbox.processing import sample_extraction
vectorPointPerPixel = '/tmp/vectorCentroid.gpkg'
sample_extraction(raster,vector,vectorPointPerPixel)

vectorFiles = LOSGO.save_to_vector(vectorPointPerPixel,field,group=group,out_vector='/tmp/LOSGO.gpkg')

for tr,vl in LOSGO.split(X,y,s):
    print(tr.shape,vl.shape)

Out:

Adding 'uniquefid' field to the original vector.
Field 'uniquefid' is already in /home/docs/checkouts/readthedocs.org/user_builds/museotoolbox/checkouts/latest/museotoolbox/datasets/_historicalmap/train.gpkg
Extract values from raster...

Reading raster values...  [........................................]1%

Reading raster values...  [#.......................................]3%

Reading raster values...  [##......................................]5%

Reading raster values...  [##......................................]6%

Reading raster values...  [###.....................................]8%

Reading raster values...  [####....................................]10%

Reading raster values...  [####....................................]12%

Reading raster values...  [#####...................................]13%

Reading raster values...  [######..................................]15%

Reading raster values...  [######..................................]17%

Reading raster values...  [#######.................................]19%

Reading raster values...  [########................................]20%

Reading raster values...  [#########...............................]22%

Reading raster values...  [#########...............................]24%

Reading raster values...  [##########..............................]26%

Reading raster values...  [###########.............................]27%

Reading raster values...  [###########.............................]29%

Reading raster values...  [############............................]31%

Reading raster values...  [#############...........................]32%

Reading raster values...  [#############...........................]34%

Reading raster values...  [##############..........................]36%

Reading raster values...  [###############.........................]38%

Reading raster values...  [###############.........................]39%

Reading raster values...  [################........................]41%

Reading raster values...  [#################.......................]43%

Reading raster values...  [##################......................]45%

Reading raster values...  [##################......................]46%

Reading raster values...  [###################.....................]48%

Reading raster values...  [####################....................]50%

Reading raster values...  [####################....................]52%

Reading raster values...  [#####################...................]53%

Reading raster values...  [######################..................]55%

Reading raster values...  [######################..................]57%

Reading raster values...  [#######################.................]59%

Reading raster values...  [########################................]60%

Reading raster values...  [#########################...............]62%

Reading raster values...  [#########################...............]64%

Reading raster values...  [##########################..............]65%

Reading raster values...  [###########################.............]67%

Reading raster values...  [###########################.............]69%

Reading raster values...  [############################............]71%

Reading raster values...  [#############################...........]72%

Reading raster values...  [#############################...........]74%

Reading raster values...  [##############################..........]76%

Reading raster values...  [###############################.........]78%

Reading raster values...  [###############################.........]79%

Reading raster values...  [################################........]81%

Reading raster values...  [#################################.......]83%

Reading raster values...  [##################################......]85%

Reading raster values...  [##################################......]86%

Reading raster values...  [###################################.....]88%

Reading raster values...  [####################################....]90%

Reading raster values...  [####################################....]92%

Reading raster values...  [#####################################...]93%

Reading raster values...  [######################################..]95%

Reading raster values...  [######################################..]97%

Reading raster values...  [#######################################.]98%

Reading raster values...  [########################################]100%
Adding each centroid to /tmp/vectorCentroid.gpkg...

Adding points...  [........................................]0%

Adding points...  [........................................]1%

Adding points...  [........................................]2%

Adding points...  [#.......................................]3%

Adding points...  [#.......................................]4%

Adding points...  [##......................................]5%

Adding points...  [##......................................]6%

Adding points...  [##......................................]7%

Adding points...  [###.....................................]8%

Adding points...  [###.....................................]9%

Adding points...  [####....................................]10%

Adding points...  [####....................................]11%

Adding points...  [####....................................]12%

Adding points...  [#####...................................]13%

Adding points...  [#####...................................]14%

Adding points...  [######..................................]15%

Adding points...  [######..................................]16%

Adding points...  [######..................................]17%

Adding points...  [#######.................................]18%

Adding points...  [#######.................................]19%

Adding points...  [########................................]20%

Adding points...  [########................................]21%

Adding points...  [########................................]22%

Adding points...  [#########...............................]23%

Adding points...  [#########...............................]24%

Adding points...  [##########..............................]25%

Adding points...  [##########..............................]26%

Adding points...  [##########..............................]27%

Adding points...  [###########.............................]28%

Adding points...  [###########.............................]29%

Adding points...  [############............................]30%

Adding points...  [############............................]31%

Adding points...  [############............................]32%

Adding points...  [#############...........................]33%

Adding points...  [#############...........................]34%

Adding points...  [##############..........................]35%

Adding points...  [##############..........................]36%

Adding points...  [##############..........................]37%

Adding points...  [###############.........................]38%

Adding points...  [###############.........................]39%

Adding points...  [################........................]40%

Adding points...  [################........................]41%

Adding points...  [################........................]42%

Adding points...  [#################.......................]43%

Adding points...  [#################.......................]44%

Adding points...  [##################......................]45%

Adding points...  [##################......................]46%

Adding points...  [##################......................]47%

Adding points...  [###################.....................]48%

Adding points...  [###################.....................]49%

Adding points...  [####################....................]50%

Adding points...  [####################....................]51%

Adding points...  [####################....................]52%

Adding points...  [#####################...................]53%

Adding points...  [#####################...................]54%

Adding points...  [######################..................]55%

Adding points...  [######################..................]56%

Adding points...  [######################..................]57%

Adding points...  [#######################.................]58%

Adding points...  [#######################.................]59%

Adding points...  [########################................]60%

Adding points...  [########################................]61%

Adding points...  [########################................]62%

Adding points...  [#########################...............]63%

Adding points...  [#########################...............]64%

Adding points...  [##########################..............]65%

Adding points...  [##########################..............]66%

Adding points...  [##########################..............]67%

Adding points...  [###########################.............]68%

Adding points...  [###########################.............]69%

Adding points...  [############################............]70%

Adding points...  [############################............]71%

Adding points...  [############################............]72%

Adding points...  [#############################...........]73%

Adding points...  [#############################...........]74%

Adding points...  [##############################..........]75%

Adding points...  [##############################..........]76%

Adding points...  [##############################..........]77%

Adding points...  [###############################.........]78%

Adding points...  [###############################.........]79%

Adding points...  [################################........]80%

Adding points...  [################################........]81%

Adding points...  [################################........]82%

Adding points...  [#################################.......]83%

Adding points...  [#################################.......]84%

Adding points...  [##################################......]85%

Adding points...  [##################################......]86%

Adding points...  [##################################......]87%

Adding points...  [###################################.....]88%

Adding points...  [###################################.....]89%

Adding points...  [####################################....]90%

Adding points...  [####################################....]91%

Adding points...  [####################################....]92%

Adding points...  [#####################################...]93%

Adding points...  [#####################################...]94%

Adding points...  [######################################..]95%

Adding points...  [######################################..]96%

Adding points...  [######################################..]97%

Adding points...  [#######################################.]98%

Adding points...  [#######################################.]99%

Adding points...  [########################################]100%
(2342,) (833,)
(2728,) (447,)

Total running time of the script: ( 0 minutes 0.715 seconds)

Gallery generated by Sphinx-Gallery