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 Python Version PyPI version PyPI downloads Fedora package

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

Installation

$ pip install sklearn-nature-inspired-algorithms

To install this package on Fedora, run:

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

Usage

Usage is similar to scikit-learn's GridSearchCV. Refer to the documentation for detailed guides and 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 for reproducible results
)

nia_search.fit(X_train, y_train)

# The best parameters are stored in nia_search.best_params_.
# You can use them to train the final model.
new_clf = RandomForestClassifier(**nia_search.best_params_, random_state=42)

You can also plot the search process with a line plot or a violin plot.

from sklearn_nature_inspired_algorithms.helpers import score_by_generation_lineplot, score_by_generation_violinplot

# The line plot shows all runs. You can choose the metric to plot: 'min', 'max', 'median', or 'mean'.
score_by_generation_lineplot(nia_search, metric='max')

# For the violin plot, specify the run to plot.
score_by_generation_violinplot(nia_search, run=0)

Jupyter notebooks with full examples are available in examples/notebooks.

Using a Custom Nature-Inspired Algorithm

If you do not want to use one of the predefined algorithm configurations, you can use any algorithm from the NiaPy collection. This gives you more control over the algorithm behavior. Refer to the NiaPy documentation and examples for usage details.

Note: Use NiaPy version 2.5.1 or later.

from niapy.algorithms.basic import GeneticAlgorithm

algorithm = GeneticAlgorithm() # When a 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 contribution guidelines are available in 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.15.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.15.0.tar.gz.

File metadata

File hashes

Hashes for sklearn_nature_inspired_algorithms-0.15.0.tar.gz
Algorithm Hash digest
SHA256 e141bae5f6572749dfbb283155743a068771a7cefbd02baf3952f90e64de88ce
MD5 64d4e52c2d80b8f98b0c5c07bc5a68a5
BLAKE2b-256 af339b720620353e580c3d575f1951c6ed98128c24729a4296b2536047ea762d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sklearn_nature_inspired_algorithms-0.15.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.15.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sklearn_nature_inspired_algorithms-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ddb1f4daad0480bdfdf410c4281b0b58af867296d0d2b2a7e08f2e239e8ae009
MD5 4fb86776cc54e5457a33a2675aed0da5
BLAKE2b-256 b40ec16d33f758abab81cb8481077a3df27bcc5f35d855db663f210b40dbd0dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for sklearn_nature_inspired_algorithms-0.15.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