Source code for deepmol.parameter_optimization.hyperparameter_optimization

import itertools
import os
import random
import shutil
import tempfile
from abc import abstractmethod
from functools import reduce
from operator import mul
from typing import Dict, Any, Tuple, List, Union

import numpy as np
from keras.wrappers.scikit_learn import KerasRegressor, KerasClassifier
from sklearn.model_selection import StratifiedKFold, KFold, RandomizedSearchCV, GridSearchCV

from deepmol.datasets import Dataset
from deepmol.loggers.logger import Logger
from deepmol.metrics import Metric
from deepmol.models import SklearnModel, KerasModel
from deepmol.models.models import Model
from deepmol.parameter_optimization._utils import _convert_hyperparam_dict_to_filename, validate_metrics
from deepmol.parameter_optimization.deepchem_hyperparameter_optimization import DeepchemRandomSearchCV, \
    DeepchemGridSearchCV


[docs]class HyperparameterOptimizer(object): """ Abstract superclass for hyperparameter search classes. """ def __init__(self, model_builder: callable, mode: str = None): """ Initialize Hyperparameter Optimizer. Note this is an abstract constructor which should only be used by subclasses. Parameters ---------- model_builder: callable This parameter must be constructor function which returns an object which is an instance of `Models`. This function must accept two arguments, `model_params` of type `dict` and 'model_dir', a string specifying a path to a model directory. mode: str The mode of the model. Can be 'classification' or 'regression'. """ if self.__class__.__name__ == "HyperparamOpt": raise ValueError("HyperparamOpt is an abstract superclass and cannot be directly instantiated. " "You probably want to instantiate a concrete subclass instead.") self.model_builder = model_builder self.mode = mode self.logger = Logger()
[docs]class HyperparameterOptimizerValidation(HyperparameterOptimizer): """ Provides simple grid hyperparameter search capabilities. This class performs a grid hyperparameter search over the specified hyperparameter space. """
[docs]class HyperparameterOptimizerCV(HyperparameterOptimizer): """ Provides simple grid hyperparameter search capabilities. This class performs a grid hyperparameter search over the specified hyperparameter space. """