kwcoco.util
¶
mkinit ~/code/kwcoco/kwcoco/util/__init__.py -w
Submodules¶
Package Contents¶
Classes¶
Wrapper around a specific executor. |
|
Implements the concurrent.futures API around a single-threaded backend |
|
Stratified K-Folds cross-validator with Grouping |
- class kwcoco.util.Executor(mode='thread', max_workers=0)[source]¶
Bases:
object
Wrapper around a specific executor.
Abstracts Serial, Thread, and Process Executor via arguments.
- Parameters
mode (str, default=’thread’) – either thread, serial, or process
max_workers (int, default=0) – number of workers. If 0, serial is forced.
- __enter__(self)¶
- __exit__(self, ex_type, ex_value, tb)¶
- submit(self, func, *args, **kw)¶
- shutdown(self)¶
- class kwcoco.util.SerialExecutor[source]¶
Bases:
object
Implements the concurrent.futures API around a single-threaded backend
Example
>>> with SerialExecutor() as executor: >>> futures = [] >>> for i in range(100): >>> f = executor.submit(lambda x: x + 1, i) >>> futures.append(f) >>> for f in concurrent.futures.as_completed(futures): >>> assert f.result() > 0 >>> for i, f in enumerate(futures): >>> assert i + 1 == f.result()
- __enter__(self)¶
- __exit__(self, ex_type, ex_value, tb)¶
- submit(self, func, *args, **kw)¶
- shutdown(self)¶
- class kwcoco.util.StratifiedGroupKFold(n_splits=3, shuffle=False, random_state=None)[source]¶
Bases:
sklearn.model_selection._split._BaseKFold
Stratified K-Folds cross-validator with Grouping
Provides train/test indices to split data in train/test sets.
This cross-validation object is a variation of GroupKFold that returns stratified folds. The folds are made by preserving the percentage of samples for each class.
Read more in the User Guide.
- Parameters
n_splits (int, default=3) – Number of folds. Must be at least 2.
- _make_test_folds(self, X, y=None, groups=None)¶
- Parameters
X (ndarray) – data
y (ndarray) – labels
groups (ndarray) – groupids for items. Items with the same groupid must be placed in the same group.
- Returns
test_folds
- Return type
Example
>>> import kwarray >>> rng = kwarray.ensure_rng(0) >>> groups = [1, 1, 3, 4, 2, 2, 7, 8, 8] >>> y = [1, 1, 1, 1, 2, 2, 2, 3, 3] >>> X = np.empty((len(y), 0)) >>> self = StratifiedGroupKFold(random_state=rng, shuffle=True) >>> skf_list = list(self.split(X=X, y=y, groups=groups)) ... >>> import ubelt as ub >>> print(ub.repr2(skf_list, nl=1, with_dtype=False)) [ (np.array([2, 3, 4, 5, 6]), np.array([0, 1, 7, 8])), (np.array([0, 1, 2, 7, 8]), np.array([3, 4, 5, 6])), (np.array([0, 1, 3, 4, 5, 6, 7, 8]), np.array([2])), ]
- _iter_test_masks(self, X, y=None, groups=None)¶
Generates boolean masks corresponding to test sets.
By default, delegates to _iter_test_indices(X, y, groups)
- split(self, X, y, groups=None)¶
Generate indices to split data into training and test set.