Community Conundrum 28: News Engagement is live! Read More

where can i found the detailed API functions for scenario interaction

Level 2
where can i found the detailed API functions for scenario interaction

For example, I can find the function train_model(model_idproject_key=Nonebuild_mode='RECURSIVE_BUILD'step_name=Noneasync=Falsefail_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

0 Kudos
3 Replies
Dataiker
Dataiker

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

0 Kudos
Level 2
Author

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

0 Kudos
Dataiker
Dataiker

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

0 Kudos
A banner prompting to get Dataiku DSS