Source code for traveltimes_prediction.models.create_model


from .algorithms.svr_wrapper import SVRWrapper
from .algorithms.linear_regression_wrapper import LinearRegressionWrapper
from .algorithms.ridge_wrapper import RidgeWrapper
from .algorithms.elastic_net_wrapper import ElasticNetWrapper

from .algorithms.dbscan_wrapper import DBScanWrapper
from .algorithms.mbkmeans_wrapper import MBKMeansWrapper

from . import ClusterModel, TimeDomainModel, CombinedModel

from sklearn.preprocessing import MinMaxScaler, StandardScaler


models_dict = {SVRWrapper.name: SVRWrapper,
               DBScanWrapper.name: DBScanWrapper, MBKMeansWrapper.name: MBKMeansWrapper, RidgeWrapper.name: RidgeWrapper,
               LinearRegressionWrapper.name: LinearRegressionWrapper, ElasticNetWrapper.name: ElasticNetWrapper,
               ClusterModel.name: ClusterModel, TimeDomainModel.name: TimeDomainModel, CombinedModel.name: CombinedModel}

scalers_dict = {'standard': StandardScaler, "minmax": MinMaxScaler}


[docs]def create_model(model_dump): """ Method for recreation of the model from dumps. :param dict model_dump: :return: """ model = models_dict[model_dump['model_type']] return model.load(model_dump['model'])
[docs]def params_converter(d): """ Fucntion for converting the classes to string representations. :param dict d: :return: """ ddd = dict() for k, v in d.items(): if isinstance(v, dict): v = params_converter(v) else: v = model_translator(v) ddd[k] = v return ddd
[docs]def model_translator(obj): """ Function for translating the model name to class & vice versa. :param class/string obj: The class descriptor or attribute .name :return: string or class """ if isinstance(obj, str): if obj == LinearRegressionWrapper.name: return LinearRegressionWrapper elif obj == RidgeWrapper.name: return RidgeWrapper elif obj == SVRWrapper.name: return SVRWrapper elif obj == MBKMeansWrapper.name: return MBKMeansWrapper elif obj == ElasticNetWrapper.name: return ElasticNetWrapper elif obj == ClusterModel.name: return ClusterModel elif obj == TimeDomainModel.name: return TimeDomainModel elif obj == CombinedModel.name: return CombinedModel return obj else: if obj is LinearRegressionWrapper: return LinearRegressionWrapper.name elif obj is RidgeWrapper: return RidgeWrapper.name elif obj is SVRWrapper: return SVRWrapper.name elif obj is MBKMeansWrapper: return MBKMeansWrapper.name elif obj is ElasticNetWrapper: return ElasticNetWrapper.name elif obj is ClusterModel: return ClusterModel.name elif obj is TimeDomainModel: return TimeDomainModel.name elif obj is CombinedModel: return CombinedModel.name return obj