This release is a pre-release and may not be stable for production use.
Sklearn-genetic-opt
scikit-learn models hyperparameters tuning, using evolutionary algorithms.
This is meant to be an alternative from popular methods inside scikit-learn such as Grid Search and Randomized Grid Search.
Sklearn-genetic-opt uses evolutionary algorithms from the deap package to choose set of hyperparameters that optimizes (max or min) the cross validation scores, it can be used for both regression and classification problems.
Documentation is available here
Sampled distribution of hyperparameters:
Optimization progress in a regression problem:
Main Features:
GASearchCV: Principal class of the package, holds the evolutionary cross validation optimization routine
Algorithms: Set of different evolutionary algorithms to use as optimization procedure
Callbacks: Custom evaluation strategies to generate Early Stopping rules
Plots: Generate pre-define plots to understand the optimization process
Usage:
Install sklearn-genetic-opt
It’s advised to install sklearn-genetic using a virtual env, inside the env use:
pip install sklearn-genetic-opt
Example
from sklearn_genetic import GASearchCV
from sklearn_genetic.space import Continuous, Categorical, Integer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split, StratifiedKFold
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
data = load_digits()
n_samples = len(data.images)
X = data.images.reshape((n_samples, -1))
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
clf = RandomForestClassifier()
param_grid = {'min_weight_fraction_leaf': Continuous(0.01, 0.5, distribution='log-uniform'),
'bootstrap': Categorical([True, False]),
'max_depth': Integer(2, 30),
'max_leaf_nodes': Integer(2, 35),
'n_estimators': Integer(100, 300)}
cv = StratifiedKFold(n_splits=3, shuffle=True)
evolved_estimator = GASearchCV(estimator=clf,
cv=cv,
scoring='accuracy',
population_size=10,
generations=35,
param_grid=param_grid,
n_jobs=-1,
verbose=True,
keep_top_k=4)
# Train and optimize the estimator
evolved_estimator.fit(X_train, y_train)
# Best parameters found
print(evolved_estimator.best_params_)
# Use the model fitted with the best parameters
y_predict_ga = evolved_estimator.predict(X_test)
print(accuracy_score(y_test, y_predict_ga))
# Saved metadata for further analysis
print("Stats achieved in each generation: ", evolved_estimator.history)
print("Best k solutions: ", evolved_estimator.hof)
Results
Log controlled by verbosity
Changelog
See the changelog for notes on the changes of Sklearn-genetic-opt
Important links
Official source code repo: https://github.com/rodrigo-arenas/Sklearn-genetic-opt/
Download releases: https://pypi.org/project/sklearn-genetic-opt/
Issue tracker: https://github.com/rodrigo-arenas/Sklearn-genetic-opt/issues
Source code
You can check the latest development version with the command:
git clone https://github.com/rodrigo-arenas/Sklearn-genetic-opt.git
Contributing
Contributions are more than welcome! There are lots of opportunities on the on going project, so please get in touch if you would like to help out. Also check the Contribution guide
Testing
After installation, you can launch the test suite from outside the source directory:
pytest sklearn_genetic
Release files for sklearn-genetic-opt 0.4.1.dev0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sklearn-genetic-opt-0.4.1.dev0.tar.gz | 19.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sklearn_genetic_opt-0.4.1.dev0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.1 kB
Release files / sklearn-genetic-opt-0.4.1.dev0.tar.gz
| Download URL | sklearn-genetic-opt-0.4.1.dev0.tar.gz |
|---|---|
| Size | 19.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ab26f6504caed7ca299dd225fdb5a97cc642c50581a3d918beadef5b3623b729
|
|
BLAKE2b-256 checksum How to use checksums |
065413517b724a8e30add2cc9d6478358141e7082fdb110b177876cb5c3e0eb6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0.post20210125 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.8
|
Release files / sklearn_genetic_opt-0.4.1.dev0-py3-none-any.whl
| Download URL | sklearn_genetic_opt-0.4.1.dev0-py3-none-any.whl |
|---|---|
| Size | 23.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
405b626db5d4e9af7e9989debde7b8ee02a5864dcef2daa73b165eedeeda37fd
|
|
BLAKE2b-256 checksum How to use checksums |
f0efae77bd0780c5bbad08a6f209d48af6b6407bccc4d7c784787e49980ece27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0.post20210125 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.8
|