Skip to content

Development version

You are reading the latest (dev) docs. For the stable version, see stable.

Search Space

The sklearn_genetic.space module provides three dimension types for defining the hyperparameter search space.

Integer

Samples integer values from a range [lower, upper].

python
from sklearn_genetic.space import Integer

Integer(lower, upper, distribution="uniform")
ParameterTypeDefaultDescription
lowerintMinimum value (inclusive)
upperintMaximum value (inclusive)
distributionstr"uniform"Sampling distribution: "uniform"

Example:

python
"n_estimators": Integer(50, 500),
"max_depth": Integer(1, 20),

Continuous

Samples floating-point values from a range [lower, upper].

python
from sklearn_genetic.space import Continuous

Continuous(lower, upper, distribution="uniform")
ParameterTypeDefaultDescription
lowerfloatMinimum value
upperfloatMaximum value
distributionstr"uniform"Sampling distribution: "uniform" or "log-uniform"

Use distribution="log-uniform" for parameters that span orders of magnitude (learning rates, regularization strengths):

python
"learning_rate": Continuous(1e-4, 1e-1, distribution="log-uniform"),
"alpha": Continuous(1e-6, 1.0, distribution="log-uniform"),

Categorical

Samples from a fixed list of choices.

python
from sklearn_genetic.space import Categorical

Categorical(choices)
ParameterTypeDefaultDescription
choiceslistList of valid values. Can include None

Example:

python
"max_features": Categorical(["sqrt", "log2", None]),
"solver": Categorical(["lbfgs", "sgd", "adam"]),
"activation": Categorical(["relu", "tanh", "logistic"]),

Complete Example

python
from sklearn_genetic.space import Categorical, Continuous, Integer

param_grid = {
    "n_estimators": Integer(50, 300),
    "max_depth": Integer(2, 15),
    "learning_rate": Continuous(0.01, 0.3, distribution="log-uniform"),
    "subsample": Continuous(0.5, 1.0),
    "max_features": Categorical(["sqrt", "log2"]),
    "min_samples_leaf": Integer(1, 20),
}

Convert sklearn/scipy-style spaces

from_sklearn_space converts common RandomizedSearchCV-style dictionaries into native sklearn-genetic-opt dimensions. Use it when migrating an existing param_distributions mapping; when defining a new space, prefer the native dimensions directly:

python
from scipy import stats

from sklearn_genetic.space import from_sklearn_space

param_grid = from_sklearn_space({
    "n_estimators": stats.randint(50, 300),
    "learning_rate": stats.loguniform(1e-3, 1e-1),
    "max_features": stats.uniform(0.2, 0.8),
    "criterion": ["gini", "entropy"],
})

Conversion rules:

Input valueOutput dimension
list, tuple, set, range, numpy arrayCategorical([...])
scipy.stats.randint(low, high)Integer(low, high - 1)
scipy.stats.uniform(loc, scale)Continuous(loc, loc + scale)
scipy.stats.loguniform(a, b) / reciprocal(a, b)Continuous(a, b, distribution="log-uniform")
Existing Integer, Continuous, Categoricalreturned unchanged

Unsupported scipy distributions raise an actionable ValueError that names the distribution and suggests defining the corresponding Integer, Continuous, or Categorical dimension manually.

See Also

Released under the MIT License.