-
Notifications
You must be signed in to change notification settings - Fork 44
Description
Describe the issue
When I attempt to register a scitkit-learn model in Jupyter Lab in Viya Workbench, I experience the following error: "ValueError: Please provide all possible values for the target variable, including a no-event value." Examining the stack trace, the issue is with the target_value property of the object returned when running get_model_info (called within register_models). For a binary classifier model, the register_model expects the target_value property to return 0 (non-event value) and 1 (event value), but it is only returning a 1 (event value). Looking at utils/model_info.py, this is intentional for a binary classifier model for the target_value property to only return the event. However, this is causing the register_model function to complete with errors.
To Reproduce
Python notebook has been attached. Error occurs when register_model function is called.
RiskModelWorkbenchLendingClubFinal-simplified.zip
Expected behavior
I expect the register_model function to complete without errors and successfully register this scikit-learn model in the Model Manager repository in the specified project in the target environment.
Stack Trace
ValueError Traceback (most recent call last)
Cell In[34], line 3
1 model_name="SK_LogisticRegression"
2 project="Test"
----> 3 register_model(model_sklg, model_name, X=X_train, project=project, force=True)
File /workspaces/workspace/.user-python-packages/lib/python3.11/site-packages/sasctl/tasks.py:494, in register_model(model, name, project, repository, X, version, files, force, record_packages, modeler, input)
483 model_obj = _register_sas_model(
484 model,
485 name,
(...)
490 version=version,
491 )
493 elif not isinstance(model, dict):
--> 494 model_obj = _register_open_source_model(
495 model, name, project, X=X, modeler=modeler or current_session().username
496 )
497 else:
498 project = _create_project(project, model, repo_obj)
File /workspaces/workspace/.user-python-packages/lib/python3.11/site-packages/sasctl/tasks.py:221, in _register_open_source_model(model, name, project, X, modeler)
219 output_vars = JSONFiles().write_var_json(info.y, is_input=False)
220 metadata = JSONFiles().write_file_metadata_json(model_prefix=name)
--> 221 properties = JSONFiles().write_model_properties_json(
222 model_name=name,
223 model_desc=info.description,
224 model_algorithm=info.algorithm,
225 modeler=modeler,
226 target_variable=info.target_column,
227 target_values=info.target_values,
228 )
230 # requirements = JSONFiles().create_requirements_json(model)
232 pzmm_files.update(serialized_model)
File /workspaces/workspace/.user-python-packages/lib/python3.11/site-packages/sasctl/pzmm/write_json_files.py:389, in JSONFiles.write_model_properties_json(cls, model_name, target_variable, target_values, json_path, model_desc, model_algorithm, model_function, modeler, train_table, properties)
381 properties.append(
382 {
383 "name": "multiclass_proba_variables",
(...)
386 }
387 )
388 else:
--> 389 raise ValueError(
390 "Please provide all possible values for the target variable, including"
391 " a no-event value."
392 )
394 truncated_properties = []
395 for prop in properties:
ValueError: Please provide all possible values for the target variable, including a no-event value.
Version
sasctl 1.10.6