Metadata-Version: 2.1
Name: mihkelBayesian
Version: 0.1.7
Summary: Machine learning hyperparameter optimiser using the Bayesian model
Home-page: https://github.com/mihkelKR/mihkelBayesian
Author: Mihkel Kaarel Raidal
Author-email: m.k.raidal@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: numpy (>=1.18.1)
Requires-Dist: matplotlib (>=3.1.3)
Requires-Dist: sklearn (>=0.0)
Requires-Dist: scipy (>=1.4.1)

# mihkelBayesian

This is a Bayesian optimizer created to optimize hyperparameters different functions and machine learning. 

 # Installation

Run the following command:
pip install mihkelBayesian

# How to mihkelBayesian

## Choosing the function to evaluate

Open functions.py to see all currently available functions. Each function takes an array XY that is automatically generated by the optimizer and a list of function constants that the function uses. Use one of the pre-existing functions or write your own function that the optimizer will call upon. Custom function can be analytical, machine learning etc. 

## Optimizing hyperparameters

In order to optimize 2 hyperparameters you need to: 

import optimize.run(evaluateFunction, functionConstants, n_iterations,bounds), where 

evaluateFunction is a string of the same name as the function you wish to evaluate in functions.py. 
functionConstans is a list of constants you wish to apply to the evaluateFunction
n_iterations is how many measurements of the function the optimizer is allower to make
bounds is a (1 x 2) shape numpy array that limits the searchspace in the form of [[x1min,x1max],[x2min,x2max]]

Function run() outputs the smallest function value and the hyperparameter pair corresponding to that value. 


## Testing

Pytest is used to test the code. All tests are located in the 'tests' folder.To run the tests, execute:

>>> pytest

# Notes

You can vary the hyperparameters of the optimizer in order to get better results.

More than 500 no_iterations takes long time to compute. Often no more than 300 iterations are needed. 

