def __set_up_model_explanations(self, best_model, X_train, X_test, y_train, y_test): return automl_setup_model_explanations(best_model, X=X_train, X_test=X_test, y=y_train, task='classification')
def run(raw_data): # Get predictions and explanations for each data point data = pd.read_json(raw_data, orient="records") # Make prediction predictions = automl_model.predict(data) # Setup for inferencing explanations automl_explainer_setup_obj = automl_setup_model_explanations( automl_model, X_test=data, task="regression") # Retrieve model explanations for engineered explanations engineered_local_importance_values = scoring_explainer.explain( automl_explainer_setup_obj.X_test_transform) # Retrieve model explanations for raw explanations raw_local_importance_values = scoring_explainer.explain( automl_explainer_setup_obj.X_test_transform, get_raw=True) # You can return any data type as long as it is JSON-serializable return { "predictions": predictions.tolist(), "engineered_local_importance_values": engineered_local_importance_values, "raw_local_importance_values": raw_local_importance_values, }
def run(raw_data): try: columns = deploy_parameters.get("dataset_columns") data = json.loads(raw_data)["data"] input_data = pd.DataFrame.from_records( data, columns=columns) inputs_dc.collect(input_data) pred_array = heart_disease_model.predict(input_data) automl_explainer_setup_obj = automl_setup_model_explanations(heart_disease_model, X_test=input_data, task='classification') local_importance_values = explainer_model.explain( automl_explainer_setup_obj.X_test_transform) iterator = map(lambda x, y: {"prediction": HeartDiseaseTreatment(x).name, "local_importance": dict( zip(columns, y))}, pred_array.tolist(), local_importance_values) return json.dumps({"results": [*iterator]}) except Exception as e: result = str(e) return json.dumps({"error": result})
def run(raw_data): data = pd.read_json(raw_data) # Make prediction pred = model.predict(data) # Get raw feature importance values automl_explainer_setup_obj = automl_setup_model_explanations( model, X_test=data, task='classification') raw_local_importance_values = scoring_explainer.explain( automl_explainer_setup_obj.X_test_transform, get_raw=True) # Combine explanations with feature names, reverse sorted by importance score num_records = data.shape[0] explanations = [] for i in range(num_records): exp_dict = dict( zip(automl_explainer_setup_obj.raw_feature_names, raw_local_importance_values[i])) sorted_exp_dict = dict( sorted(exp_dict.items(), key=lambda item: item[1], reverse=True)) explanations.append(sorted_exp_dict) return {"result": pred.tolist(), "explanations": explanations}
train_dataset = Dataset.get_by_name(workspace=ws, name='<<train_dataset_name>>') # Drop the lablled column to get the training set. X_train = train_dataset.drop_columns(columns=['<<target_column_name>>']) y_train = train_dataset.keep_columns(columns=['<<target_column_name>>'], validate=True) # Get the train dataset from the workspace test_dataset = Dataset.get_by_name(workspace=ws, name='<<test_dataset_name>>') # Drop the lablled column to get the testing set. X_test = test_dataset.drop_columns(columns=['<<target_column_name>>']) # Setup the class for explaining the AtuoML models automl_explainer_setup_obj = automl_setup_model_explanations(fitted_model, '<<task>>', X=X_train, X_test=X_test, y=y_train) # Initialize the Mimic Explainer explainer = MimicWrapper( ws, automl_explainer_setup_obj.automl_estimator, LGBMExplainableModel, init_dataset=automl_explainer_setup_obj.X_transform, run=automl_run, features=automl_explainer_setup_obj.engineered_feature_names, feature_maps=[automl_explainer_setup_obj.feature_map], classes=automl_explainer_setup_obj.classes) # Compute the engineered explanations
name="<<train_dataset_name>>") # Drop the labeled column to get the training set. X_train = train_dataset.drop_columns(columns=["<<target_column_name>>"]) y_train = train_dataset.keep_columns(columns=["<<target_column_name>>"], validate=True) # Get the test dataset from the workspace test_dataset = Dataset.get_by_name(workspace=ws, name="<<test_dataset_name>>") # Drop the labeled column to get the testing set. X_test = test_dataset.drop_columns(columns=["<<target_column_name>>"]) # Setup the class for explaining the AutoML models automl_explainer_setup_obj = automl_setup_model_explanations( fitted_model, "<<task>>", X=X_train, X_test=X_test, y=y_train, automl_run=automl_run) # Initialize the Mimic Explainer explainer = MimicWrapper( ws, automl_explainer_setup_obj.automl_estimator, LGBMExplainableModel, init_dataset=automl_explainer_setup_obj.X_transform, run=automl_explainer_setup_obj.automl_run, features=automl_explainer_setup_obj.engineered_feature_names, feature_maps=[automl_explainer_setup_obj.feature_map], classes=automl_explainer_setup_obj.classes, )
train_dataset = Dataset.get_by_name(workspace=ws, name='machineData_train_dataset') # Drop the lablled column to get the training set. X_train = train_dataset.drop_columns(columns=['<<target_column_name>>']) y_train = train_dataset.keep_columns(columns=['<<target_column_name>>'], validate=True) # Get the train dataset from the workspace test_dataset = Dataset.get_by_name(workspace=ws, name='<<test_dataset_name>>') # Drop the lablled column to get the testing set. X_test = test_dataset.drop_columns(columns=['<<target_column_name>>']) # Setup the class for explaining the AtuoML models automl_explainer_setup_obj = automl_setup_model_explanations(fitted_model, 'classification', X=X_train, X_test=X_test, y=y_train) # Initialize the Mimic Explainer explainer = MimicWrapper( ws, automl_explainer_setup_obj.automl_estimator, LGBMExplainableModel, init_dataset=automl_explainer_setup_obj.X_transform, run=automl_run, features=automl_explainer_setup_obj.engineered_feature_names, feature_maps=[automl_explainer_setup_obj.feature_map], classes=automl_explainer_setup_obj.classes) # Compute the engineered explanations