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 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
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
File details
Details for the file sklearn_nature_inspired_algorithms-0.8.1.tar.gz
.
File metadata
- Download URL: sklearn_nature_inspired_algorithms-0.8.1.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.8.12 Linux/5.13.0-1017-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 910469cdfff3cfee220db3be368ba6fe387339cc864c74dc553c627ae983de5d |
|
MD5 | e162f3bdff067e78acdf1e8039ac81fc |
|
BLAKE2b-256 | 5d0d9642cf9f438bc01668dbd1015cf4e58a1a779c1da5bdef413a369f610610 |
File details
Details for the file sklearn_nature_inspired_algorithms-0.8.1-py3-none-any.whl
.
File metadata
- Download URL: sklearn_nature_inspired_algorithms-0.8.1-py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.8.12 Linux/5.13.0-1017-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3d32b2e9694fd8ee0bebaf40ced5adb472e1241baea57c65e6d524bb1101401 |
|
MD5 | 3cd2206e63d7e3f830fc32ad0a1efdbc |
|
BLAKE2b-256 | 9d040feb22424cf32a43d23554281d8910ec18277074dab38cdf94bb31ded503 |