Note
Click here to download the full example code
Spatial Leave-One-Out (SLOO)¶
This example shows how to make a Spatial Leave-One-Out called here a Spatial Leave-One-Pixel-Out.
For more information see : https://onlinelibrary.wiley.com/doi/full/10.1111/geb.12161.
Import librairies¶
from museotoolbox.cross_validation import SpatialLeaveOneOut
from museotoolbox import datasets,processing
Load HistoricalMap dataset¶
raster,vector = datasets.load_historical_data(low_res=True)
field = 'Class'
X,y = processing.extract_ROI(raster,vector,field)
distance_matrix = processing.get_distance_matrix(raster,vector)
Create CV¶
n_splits will be the number of the least populated class
SLOO = SpatialLeaveOneOut(distance_thresold=100,distance_matrix=distance_matrix,
random_state=12)
Note
Split is made to generate each fold
SLOO.get_n_splits(X,y)
for tr,vl in SLOO.split(X,y):
print(tr.shape,vl.shape)
Out:
(2515,) (5,)
(1841,) (5,)
Save each train/valid in a spatial vector file
from museotoolbox.processing import sample_extraction
sample_extraction(raster,vector,'/tmp/one_point_per_pixel.gpkg')
files = SLOO.save_to_vector('/tmp/one_point_per_pixel.gpkg','Class',out_vector='/tmp/trvl.gpkg')
print(files)
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/one_point_per_pixel.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%
[['/tmp/trvl_train_0.gpkg', '/tmp/trvl_valid_0.gpkg'], ['/tmp/trvl_train_1.gpkg', '/tmp/trvl_valid_1.gpkg']]
Draw image
from __drawCVmethods import plotMethod
plotMethod('SLOO-pixel')
Out:
/home/docs/checkouts/readthedocs.org/user_builds/museotoolbox/checkouts/latest/examples/cross_validation/__drawCVmethods.py:35: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
ax = f.add_subplot(111)
Total running time of the script: ( 0 minutes 0.895 seconds)