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