def run_generate(df: DataFrame, problem_definition: ProblemDefinition, predictor_id: int) -> int: json_ai = lightwood.json_ai_from_problem(df, problem_definition) code = lightwood.code_from_json_ai(json_ai) predictor_record = Predictor.query.with_for_update().get(predictor_id) predictor_record.json_ai = json_ai.to_dict() predictor_record.code = code db.session.commit()
def run_update(name: str, company_id: int): original_name = name name = f'{company_id}@@@@@{name}' fs_store = FsStore() config = Config() data_store = DataStoreWrapper(DataStore(), company_id) try: predictor_record = Predictor.query.filter_by(company_id=company_id, name=original_name).first() assert predictor_record is not None predictor_record.update_status = 'updating' session.commit() ds = data_store.get_datasource_obj(None, raw=False, id=predictor_record.datasource_id) df = ds.df problem_definition = predictor_record.learn_args problem_definition['target'] = predictor_record.to_predict[0] if 'join_learn_process' in problem_definition: del problem_definition['join_learn_process'] # Adapt kwargs to problem definition if 'timeseries_settings' in problem_definition: problem_definition['timeseries_settings'] = problem_definition['timeseries_settings'] if 'stop_training_in_x_seconds' in problem_definition: problem_definition['time_aim'] = problem_definition['stop_training_in_x_seconds'] json_ai = lightwood.json_ai_from_problem(df, problem_definition) predictor_record.json_ai = json_ai.to_dict() predictor_record.code = lightwood.code_from_json_ai(json_ai) predictor_record.data = {'training_log': 'training'} session.commit() predictor: lightwood.PredictorInterface = lightwood.predictor_from_code(predictor_record.code) predictor.learn(df) fs_name = f'predictor_{predictor_record.company_id}_{predictor_record.id}' pickle_path = os.path.join(config['paths']['predictors'], fs_name) predictor.save(pickle_path) fs_store.put(fs_name, fs_name, config['paths']['predictors']) predictor_record.data = predictor.model_analysis.to_dict() # type: ignore session.commit() predictor_record.lightwood_version = lightwood.__version__ predictor_record.mindsdb_version = mindsdb_version predictor_record.update_status = 'up_to_date' session.commit() except Exception as e: log.error(e) predictor_record.update_status = 'update_failed' # type: ignore session.commit() return str(e)
def run_generate(df: DataFrame, problem_definition: ProblemDefinition, predictor_id: int, json_ai_override: dict = None) -> int: json_ai = lightwood.json_ai_from_problem(df, problem_definition) if json_ai_override is None: json_ai_override = {} json_ai_override = brack_to_mod(json_ai_override) json_ai = json_ai.to_dict() rep_recur(json_ai, json_ai_override) json_ai = JsonAI.from_dict(json_ai) code = lightwood.code_from_json_ai(json_ai) predictor_record = Predictor.query.with_for_update().get(predictor_id) predictor_record.json_ai = json_ai.to_dict() predictor_record.code = code db.session.commit()
def run_generate(df: DataFrame, problem_definition: ProblemDefinition, name: str, company_id: int, datasource_id: int) -> int: json_ai = lightwood.json_ai_from_problem(df, problem_definition) code = lightwood.code_from_json_ai(json_ai) predictor_record = db.Predictor( company_id=company_id, name=name, json_ai=json_ai.to_dict(), code=code, datasource_id=datasource_id, mindsdb_version=mindsdb_version, lightwood_version=lightwood_version, to_predict=[problem_definition.target], learn_args=problem_definition.to_dict(), data={'name': name} ) db.session.add(predictor_record) db.session.commit()