Random Sampling

Random Uniform Sampling

For many spatial models, it is common to take a random sample of the predictors to represent a single class (i.e. an environmental background or pseudo-absences in a binary classification model). The sample function is supplied in the sampling module for this purpose:

# extract training data using a random sample
df_rand = stack.sample(size=1000, random_state=1)
df_rand.plot()

Stratified Random Sampling

The sample function also enables stratified random sampling based on passing a categorical raster dataset to the strata argument. The categorical raster should spatially overlap with the dataset to be sampled, but it does not need to be of the same grid resolution. This raster should be passed as a opened rasterio dataset:

with rasterio.open(nc.strata) as strata:

    df_strata = stack.sample(size=5, strata=strata, random_state=1)
    df_strata = df_strata.dropna()

    fig, ax = plt.subplots()

    ax.imshow(
        data=strata.read(1, masked=True),
        extent=rasterio.plot.plotting_extent(strata),
        cmap='tab10')

    df_strata.plot(ax=ax, markersize=20, color='white')
    plt.show()