We can define any custom constraint that we want. For instance,
assume we have a binary function with arguments x and y, and we want
to make sure that the provided values remain within the unit circle.

y – (optional) labels to be used for cross-validation.
If specified, len(labels) must equal len(x)

strata – (optional) strata to account for when generating folds.
Strata signify instances that must be spread across folds.
Not every instance must be in a stratum.
Specify strata as a list of lists of instance indices.

folds – (optional) prespecified cross-validation folds to be used (list of lists (iterations) of lists (folds)).

num_iter – (optional) number of iterations to use (default 1)

regenerate_folds – (optional) whether or not to regenerate folds on every evaluation (default false)

clusters – (optional) clusters to account for when generating folds.
Clusters signify instances that must be assigned to the same fold.
Not every instance must be in a cluster.
Specify clusters as a list of lists of instance indices.