예제 #1
0
def _step_db(estimator: BaseEstimator, ids: Tuple):
    estimator.is_fitted_ = True
    # make a dictionary of parameters
    pms = ()
    estimator_params = estimator.get_params()
    for key in sorted(estimator_params.keys()):
        value = estimator_params[key]
        if isinstance(value, Callable):
            pms = pms + (key, value.__name__)

        if value == "warn":
            pms = pms + (key, 10)

        # discard parameters which are not json serializable
        try:
            json.dumps(value)
            pms = pms + (key, value)
        except TypeError:
            continue

    query = (
        json.dumps(estimator.train_),
        json.dumps(estimator.features_),
        json.dumps(pms),
        json.dumps(ids),
    )
    entry = (
        *query,
        pickle.dumps(estimator),
    )

    return query, entry
예제 #2
0
 def _load(self, transformer: BaseEstimator, ids: Tuple):
     query, entry = _step_db(transformer, ids)
     result = _load_from_db(self.database_, query, create_model_stmt,
                            query_model_stmt)
     if result:
         ids = ids + (result[0], )
         transformer = pickle.loads(result[5])
         transformer.is_fitted_ = True
         return transformer, ids
     else:
         return None, None