Skip to main content

Search using nature inspired algorithms over specified parameter values for an sklearn estimator.

Project description

Nature-Inspired Algorithms for scikit-learn

CI PyPI - Python Version PyPI version PyPI downloads Fedora package

Nature-inspired algorithms for hyper-parameter tuning of scikit-learn models. This package uses algorithms implementation from NiaPy.

Installation

$ pip install sklearn-nature-inspired-algorithms

To install this package on Fedora, run:

$ dnf install python3-sklearn-nature-inspired-algorithms

Usage

The usage is similar to using sklearn's GridSearchCV. Refer to the documentation for more detailed guides and more examples.

from sklearn_nature_inspired_algorithms.model_selection import NatureInspiredSearchCV
from sklearn.ensemble import RandomForestClassifier

param_grid = { 
    'n_estimators': range(20, 100, 20), 
    'max_depth': range(2, 40, 2),
    'min_samples_split': range(2, 20, 2), 
    'max_features': ["auto", "sqrt", "log2"],
}

clf = RandomForestClassifier(random_state=42)

nia_search = NatureInspiredSearchCV(
    clf,
    param_grid,
    algorithm='hba', # hybrid bat algorithm
    population_size=50,
    max_n_gen=100,
    max_stagnating_gen=10,
    runs=3,
    random_state=None, # or any number if you want same results on each run
)

nia_search.fit(X_train, y_train)

# the best params are stored in nia_search.best_params_
# finally you can train your model with best params from nia search
new_clf = RandomForestClassifier(**nia_search.best_params_, random_state=42)

Also you plot the search process with line plot or violin plot.

from sklearn_nature_inspired_algorithms.helpers import score_by_generation_lineplot, score_by_generation_violinplot

# line plot will plot all of the runs, you can specify the metric to be plotted ('min', 'max', 'median', 'mean')
score_by_generation_lineplot(nia_search, metric='max')

# in violin plot you need to specify the run to be plotted
score_by_generation_violinplot(nia_search, run=0)

Jupyter notebooks with full examples are available in here.

Using a Custom Nature-Inspired Algorithm

If you do not want to use any of the pre-defined algorithm configurations, you can use any algorithm from the NiaPy collection. This will allow you to have more control of the algorithm behavior. Refer to their documentation and examples for the usage.

Note: Use version >2.x.x of NiaPy package

from niapy.algorithms.basic import GeneticAlgorithm

algorithm = GeneticAlgorithm() # when custom algorithm is provided random_state is ignored
algorithm.set_parameters(NP=50, Ts=5, Mr=0.25)

nia_search = NatureInspiredSearchCV(
    clf,
    param_grid,
    algorithm=algorithm,
    population_size=50,
    max_n_gen=100,
    max_stagnating_gen=20,
    runs=3,
)

nia_search.fit(X_train, y_train)

Contributing

Detailed information on the contribution guidelines are in the CONTRIBUTING.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sklearn_nature_inspired_algorithms-0.14.0.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file sklearn_nature_inspired_algorithms-0.14.0.tar.gz.

File metadata

File hashes

Hashes for sklearn_nature_inspired_algorithms-0.14.0.tar.gz
Algorithm Hash digest
SHA256 1f29367b4011a287535094294ba020432330311516c1cdd9bfdbed6004e2401a
MD5 521164d412af7827f8b5e4b0d4167571
BLAKE2b-256 11c10af2d762e802f96828d2cbfac64efc9ea7c604584745a5f375c226a4ef23

See more details on using hashes here.

Provenance

The following attestation bundles were made for sklearn_nature_inspired_algorithms-0.14.0.tar.gz:

Publisher: publish.yml on timzatko/Sklearn-Nature-Inspired-Algorithms

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sklearn_nature_inspired_algorithms-0.14.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sklearn_nature_inspired_algorithms-0.14.0-py3-none-any.whl
Algorithm Hash digest
SHA256 499e60b26c68b2ea43d867e5c56ec100eeba7d5808a7d50bc59384ecab5aff16
MD5 5a9a02c79201456dec74a082f55f9a49
BLAKE2b-256 6ee43ffba199835baf05c1e91aee19039273541ff56525275f9c1cc311fda3cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for sklearn_nature_inspired_algorithms-0.14.0-py3-none-any.whl:

Publisher: publish.yml on timzatko/Sklearn-Nature-Inspired-Algorithms

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page