Search using nature inspired algorithms over specified parameter values for an sklearn estimator.
Project description
Nature-Inspired Algorithms for scikit-learn
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sklearn_nature_inspired_algorithms-0.15.0.tar.gz.
File metadata
- Download URL: sklearn_nature_inspired_algorithms-0.15.0.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e141bae5f6572749dfbb283155743a068771a7cefbd02baf3952f90e64de88ce
|
|
| MD5 |
64d4e52c2d80b8f98b0c5c07bc5a68a5
|
|
| BLAKE2b-256 |
af339b720620353e580c3d575f1951c6ed98128c24729a4296b2536047ea762d
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sklearn_nature_inspired_algorithms-0.15.0.tar.gz -
Subject digest:
e141bae5f6572749dfbb283155743a068771a7cefbd02baf3952f90e64de88ce - Sigstore transparency entry: 1784791601
- Sigstore integration time:
-
Permalink:
timzatko/Sklearn-Nature-Inspired-Algorithms@a0a97d46ae41fdcbbad070a35348e1f1ec9fbf64 -
Branch / Tag:
refs/tags/v0.15.0 - Owner: https://github.com/timzatko
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a0a97d46ae41fdcbbad070a35348e1f1ec9fbf64 -
Trigger Event:
release
-
Statement type:
File details
Details for the file sklearn_nature_inspired_algorithms-0.15.0-py3-none-any.whl.
File metadata
- Download URL: sklearn_nature_inspired_algorithms-0.15.0-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddb1f4daad0480bdfdf410c4281b0b58af867296d0d2b2a7e08f2e239e8ae009
|
|
| MD5 |
4fb86776cc54e5457a33a2675aed0da5
|
|
| BLAKE2b-256 |
b40ec16d33f758abab81cb8481077a3df27bcc5f35d855db663f210b40dbd0dc
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sklearn_nature_inspired_algorithms-0.15.0-py3-none-any.whl -
Subject digest:
ddb1f4daad0480bdfdf410c4281b0b58af867296d0d2b2a7e08f2e239e8ae009 - Sigstore transparency entry: 1784791757
- Sigstore integration time:
-
Permalink:
timzatko/Sklearn-Nature-Inspired-Algorithms@a0a97d46ae41fdcbbad070a35348e1f1ec9fbf64 -
Branch / Tag:
refs/tags/v0.15.0 - Owner: https://github.com/timzatko
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a0a97d46ae41fdcbbad070a35348e1f1ec9fbf64 -
Trigger Event:
release
-
Statement type: