Skip to main content

iNeuron Model Factory helps us to generate model training and grid search code automatically based

Project description

image

neuro-ml is a open source library designed to avoid writing duplicate code.

You can use new model of scikit learn without writing any code. Model training can be control by configuration file.

neuro_mf.ModelFactory

class neuro_mf.ModelFactory(model_config_path:str) source


Parameters:

model_config_path: location of model.yaml file

How to generate configuration file
It is very simple.
We will export sample model config file in config directory
You can use below python to export sample configuration file.

```python
from neuro_mf.config import get_sample_model_config_yaml_file

if __name__ == "__main__":
    export_file_path=get_sample_model_config_yaml_file(export_dir="config")

Check your config folder You will find a file name as "model.yaml"

content of model.yaml

grid_search:
  class: GridSearchCV
  module: sklearn.model_selection
  params:
    cv: 3
    verbose: 1
model_selection:
  module_0:
    class: ModelClassName
    module: module_of_model
    params:
      param_name1: value1
      param_name2: value2
    search_param_grid:
      param_name:
      - param_value_1
      - param_value_2
  

Now update the content of model.yaml file with below content for testing.

grid_search:
  class: GridSearchCV
  module: sklearn.model_selection
  params:
    cv: 3
    verbose: 1
model_selection:
  module_0:
    class: RandomForestRegressor
    module: sklearn.ensemble
    params:
      n_estimators: 200
      criterion: squared_error
    search_param_grid:
      n_estimators:
      - 150
      - 200
      - 250
      max_depth:
      - 2
      - 5
      - 6
  module_1:
    class: SVR
    module: sklearn.svm
    params:
      kernel: rbf
    search_param_grid:
      kernel:
      - poly
      - rbf

Attributes:

config: dict model.yaml file will be available as dict in this attribute

grid_search_cv_module: str Module of grid search cv from sklearn lib sklearn.model_selection

grid_search_class_name: str

grid_search_property_data:dict

models_initialization_config: dict

initialized_model_list: All model instance will be available in this attribute once get_initialized_model_list has been invoked on model factory object

grid_searched_best_model_list Once grid search has been done for all model then every model with their tuned paramter will be available in this attribute

Few of the function return type can be inferred using below named tuple

InitializedModelDetail = namedtuple("InitializedModelDetail",
                                    ["model_serial_number", "model", "param_grid_search", "model_name"])

GridSearchedBestModel = namedtuple("GridSearchedBestModel", ["model_serial_number",
                                                             "model",
                                                             "best_model",
                                                             "best_parameters",
                                                             "best_score",
                                                             ])

BestModel = namedtuple("BestModel", ["model_serial_number",
                                     "model",
                                     "best_model",
                                     "best_parameters",
                                     "best_score", ])


Methods:
class_for_name(module_name, class_name)
execute_grid_search_operation(self, initialized_model: InitializedModelDetail, input_feature, output_feature)
get_best_model(self, X, y, base_accuracy=0.6) -> BestModel
get_best_model_from_grid_searched_best_model_list(grid_searched_best_model_list: List[GridSearchedBestModel], base_accuracy=0.6 ) -> BestModel
get_initialized_model_list(self) -> List[InitializedModelDetail]
initiate_best_parameter_search_for_initialized_model(self, initialized_model: InitializedModelDetail, input_feature, output_feature) -> GridSearchedBestModel
initiate_best_parameter_search_for_initialized_models(self, initialized_model_list: List[InitializedModelDetail], input_feature, output_feature) -> List[GridSearchedBestModel]
read_params
update_property_of_class

How to generate configuration file It is very simple. We will export sample model config file in config directory You can use below python to export sample configuration file.

from neuro_mf.config import get_sample_model_config_yaml_file

if __name__ == "__main__":
    export_file_path=get_sample_model_config_yaml_file(export_dir="config")

Check your config folder You will find a file name as "model.yaml"

content of model.yaml

grid_search:
  class: GridSearchCV
  module: sklearn.model_selection
  params:
    cv: 3
    verbose: 1
model_selection:
  module_0:
    class: ModelClassName
    module: module_of_model
    params:
      param_name1: value1
      param_name2: value2
    search_param_grid:
      param_name:
      - param_value_1
      - param_value_2
  

Now update the content of model.yaml file with below content for testing.

grid_search:
  class: GridSearchCV
  module: sklearn.model_selection
  params:
    cv: 3
    verbose: 1
model_selection:
  module_0:
    class: RandomForestRegressor
    module: sklearn.ensemble
    params:
      n_estimators: 200
      criterion: squared_error
    search_param_grid:
      n_estimators:
      - 150
      - 200
      - 250
      max_depth:
      - 2
      - 5
      - 6
    module_1:
        class: SVR
        module: sklearn.svm
        params:
          kernel: rbf
        search_param_grid:
          kernel:
          - poly
          - rbf

Above configuration file contains information about two model Random Forest and Support Vector

get_best_model_function will return best model after comparison

Now Let's try to train a RandomForestRegressor

import os

from neuro_mf.config import get_sample_model_config_yaml_file
from neuro_mf import ModelFactory

if __name__ == "__main__":
    # export_dir=get_sample_model_config_yaml_file(export_dir="config")
    export_file_path = os.path.join("config", "model.yaml")
    model_factory = ModelFactory(model_config_path=export_file_path)
    x = None  # input feature
    y = None  # target feature
    best_model = model_factory.get_best_model(x, y, base_accuracy=0.9)
    print(best_model.best_model)
    print(f"best score:{best_model.best_score}")

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

neuro_mf-0.0.5.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

neuro_mf-0.0.5-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file neuro_mf-0.0.5.tar.gz.

File metadata

  • Download URL: neuro_mf-0.0.5.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for neuro_mf-0.0.5.tar.gz
Algorithm Hash digest
SHA256 6d0fc99e53f8b1cd93eb54346853f570feec13958ecef177fb025931a3792dc8
MD5 5e19608617dbb2c05fdf613522be3a41
BLAKE2b-256 b32e611f7f8dcc0c3752d7a1f56ef54d571520a84df3d13aab48ed21841024f3

See more details on using hashes here.

File details

Details for the file neuro_mf-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: neuro_mf-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for neuro_mf-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8f990693c065b39f286b900426fc61c82c2d9a08b13258ef097df774448d465a
MD5 9a95615c361beb5d4b22f4586914bd10
BLAKE2b-256 4fa90945130e9537336dc6796bd5db87e31ca95bc99f806dfe8315c1d3ef3b2d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page