Sign up to take part
Registered users can ask their own questions, contribute to discussions, and be part of the Community!
Registered users can ask their own questions, contribute to discussions, and be part of the Community!
For example, I can find the function train_model(model_id, project_key=None, build_mode='RECURSIVE_BUILD', step_name=None, async=False, fail_fatal=True)
But how could I know what kind of object this function returns, and how can I use with that returned value?
From the sample code, I found function get_new_version_metrics() belongs to the returned instance from train_model() , but can't find any information from documentation.
Thanks,
Lj
Hi,
In the Dataiku Scenario API, train_model returns the same object type as run_step.
If async=False (default) it returns a BuildFlowItemsStepResult object. You need to call the get_trained_model method to get a TrainedModelHandle object:
class TrainedModelHandle(object):
def __init__(self, report_item):
self.report_item = report_item
assert(self.report_item["type"] == "BUILT_MODEL")
def get_new_version(self):
return self.report_item["versionId"]
def get_model(self):
return dataiku.Model(self.report_item["target"]["modelId"], project_key = self.report_item["target"]["projectKey"])
def activate_new_version(self):
model = self.get_model()
model.activate_version(self.get_new_version())
def get_new_version_metrics(self):
model = self.get_model()
return model.get_version_metrics(self.get_new_version())
We will update our documentation to make it clearer.
Hope it helps,
Alex
Thanks Alex for the quick reply. However, I've noticed that if one wants to access the function get_new_version_metrics(), he has to use following syntax:
train_ret = scenario.train_model("0pwbYbmy")
trained_model = train_ret.get_trained_model()
performance = train_ret.get_new_version_metrics().get_performance_values()
which means function belongs to the object returned by get_train_model() not train_model().
Hope you can update the documentation quickly.
Regards,
LJ
Hi,
Thanks for spotting this. Indeed you first need to call get_trained_model on the result of train_model. In your case, the correct syntax is:
train_model_result = scenario.train_model("<modelId>")
trained_model = train_model_result.get_trained_model()
trained_model_new_performance = trained_model.get_new_version_metrics().get_performance_values()
I will edit my earlier response accordingly.
Alex