MimicWrapper 類別

包裝函式解釋器,可減少使用 explain 模型套件所需的函數調用數目。

初始化 MimicWrapper。

接受<< 2d ndarray :p aram explainable_model:用來解釋黑箱模型的未初始化代理模型。

也稱為學生模型。

建構函式

MimicWrapper(workspace, model, explainable_model, explainer_kwargs=None, init_dataset=None, run=None, features=None, classes=None, model_task=ModelTask.Unknown, explain_subset=None, transformations=None, feature_maps=None, allow_all_transformations=None)

參數

名稱 Description
workspace
必要

定義模型和數據集的工作區物件。

model
必要
str 或 <xref:<xref:model that implements sklearn.predict>()> 或 <xref:sklearn.predict_proba>() 或 <xref:<xref:pipeline function that accepts a 2d ndarray>>

向MMS註冊的模型模型標識碼,或是要說明的一般機器學習模型或管線。 如果指定了模型,它必須實作 sklearn.predict() 或 sklearn.predict_proba()。 如果指定管線,它必須包含接受 2d ndarray 的函式。

explainable_model
必要

用來說明黑箱模型的未初始化代理模型。 也稱為學生模型。

explainer_kwargs

隨所選解釋器一起進行的任何關鍵詞自變數,此處並未涵蓋。 初始化基礎解釋器時,它們會以 kwargs 的形式傳入。

預設值: None
init_dataset

用於初始化說明工具的數據集標識碼或一般數據集(例如,x_train)。

預設值: None
run
Run

執行此說明應該與相關聯。

預設值: None
features

功能名稱的清單。

預設值: None
classes

類別名稱做為字串清單。 類別名稱的順序應該符合模型輸出的順序。 只有在說明分類器時才需要。

預設值: None
model_task
str

選擇性參數,指定模型是否為分類或回歸模型。 在大部分情況下,模型的類型可以根據輸出的形狀來推斷,其中分類器具有predict_proba方法和輸出 2 維陣列,而回歸輸入器具有預測方法和輸出 1 維數位列。

預設值: ModelTask.Unknown
explain_subset

功能索引的清單。 如果指定,Azure 只會選取評估數據集中的功能子集以取得說明,這會在功能數目很大且您已經知道一組有趣的功能時,加速說明程式。 子集可以是模型摘要中的 top-k 特徵。 設定轉換時不支援此參數。

預設值: None
transformations

sklearn.compose.ColumnTransformer 或描述數據行名稱和轉換器的 Tuple 列表。 提供轉換時,說明是在轉換之前的功能。 轉換清單的格式與此處的轉換格式相同: https://github.com/scikit-learn-contrib/sklearn-pandas

如果您使用的轉換不在 解譯社群 套件支援的sklearn.preprocessing轉換清單中,則此參數無法取得多個數據行的清單做為轉換的輸入。 您可以使用下列 sklearn.preprocessing 轉換與數據行列表,因為這些已經是一對多或一對一:Binarizer、KBinsDiscretizer、KernelCenterer、LabelEncoder、MaxAbsScaler、MinMaxScaler、Normalizer、OneHotEncoder、OrdinalEncoder、PowerTransformer、QuantileTransformer、RobustScaler、StandardScaler。

可運作之轉換的範例:


   [
       (["col1", "col2"], sklearn_one_hot_encoder),
       (["col3"], None) #col3 passes as is
   ]
   [
       (["col1"], my_own_transformer),
       (["col2"], my_own_transformer),
   ]

轉換的範例,會引發錯誤,因為它無法解譯為一對多:


   [
       (["col1", "col2"], my_own_transformer)
   ]

最後一個範例無法運作,因為解譯社群套件無法判斷在採用數據行序列時,my_own_transformer提供多對多或一對多對應。

只應指定 『transformations』 或 『feature_maps』 中的一個參數來產生原始說明。 指定這兩者會導致設定例外狀況。

預設值: None
feature_maps

從原始到產生的特徵對應清單。 此參數可以是 numpy 陣列或疏鬆矩陣的清單,其中每個陣列專案 (raw_index, generated_index) 是每個原始產生的特徵組的權數。 其他項目會設定為零。 針對一連串轉換 [t1, t2, ..., tn] 從原始特徵產生產生的特徵,特徵對應清單會對應至原始到產生的對應,順序與 t1、t2 等相同。如果從 t1 到 tn 的整體原始到產生的特徵對應可用,則可以傳遞單一元素清單中的該功能對應。

只應指定 『transformations』 或 『feature_maps』 中的一個參數來產生原始說明。 指定這兩者會導致設定例外狀況。

預設值: None
allow_all_transformations

是否允許多對多和多對一轉換。

預設值: None
workspace
必要

定義模型和數據集的工作區物件。

model
必要
str 或 <xref:<xref:model that implements sklearn.predict>()> 或 <xref:sklearn.predict_proba>() 或 <xref:<xref:pipeline function>>

向MMS註冊的模型模型標識碼,或是要說明的一般機器學習模型或管線。 如果指定了模型,它必須實作 sklearn.predict() 或 sklearn.predict_proba()。 如果指定管線,它必須包含接受 2d ndarray 的函式。

explainer_kwargs
必要

隨所選解釋器一起進行的任何關鍵詞自變數,此處並未涵蓋。 初始化基礎解釋器時,它們會以 kwargs 的形式傳入。

init_dataset
必要

用於初始化說明工具的數據集標識碼或一般數據集(例如x_train)。

run
必要
Run

執行此說明應該與相關聯。

features
必要

功能名稱的清單。

classes
必要

類別名稱做為字串清單。 類別名稱的順序應該符合模型輸出的順序。 只有在說明分類器時才需要。

model_task
必要
str

選擇性參數,指定模型是否為分類或回歸模型。 在大部分情況下,模型的類型可以根據輸出的形狀來推斷,其中分類器具有predict_proba方法和輸出 2 維陣列,而回歸輸入器具有預測方法和輸出 1 維數位列。

explain_subset
必要

功能索引的清單。 如果指定,則只會選取評估數據集中的功能子集以取得說明,這會在功能數目很大且用戶已經知道一組感興趣的功能時,加速說明程式。 子集可以是模型摘要中的 top-k 特徵。 設定轉換時不支援此自變數。

transformations
必要

sklearn.compose.ColumnTransformer 或描述數據行名稱和轉換器的 Tuple 列表。 提供轉換時,說明是在轉換之前的功能。 轉換清單的格式與此處的轉換格式相同: https://github.com/scikit-learn-contrib/sklearn-pandas

如果您使用的轉換不在 解譯社群 套件支援的sklearn.preprocessing轉換清單中,則此參數無法取得多個數據行的清單做為轉換的輸入。 您可以使用下列 sklearn.preprocessing 轉換與數據行列表,因為這些已經是一對多或一對一:Binarizer、KBinsDiscretizer、KernelCenterer、LabelEncoder、MaxAbsScaler、MinMaxScaler、Normalizer、OneHotEncoder、OrdinalEncoder、PowerTransformer、QuantileTransformer、RobustScaler、StandardScaler。

可運作之轉換的範例:


   [
       (["col1", "col2"], sklearn_one_hot_encoder),
       (["col3"], None) #col3 passes as is
   ]
   [
       (["col1"], my_own_transformer),
       (["col2"], my_own_transformer),
   ]

轉換的範例,會引發錯誤,因為它無法解譯為一對多:


   [
       (["col1", "col2"], my_own_transformer)
   ]

最後一個範例無法運作,因為解譯社群套件無法判斷在採用數據行序列時,my_own_transformer提供多對多或一對多對應。

只應指定 『transformations』 或 『feature_maps』 中的一個參數來產生原始說明。 指定這兩者會導致設定例外狀況。

feature_maps
必要
list[array] 或 list[csr_matrix] <xref::param allow_all_transformations: Whether to allow many to many and many to one transformations.>

從原始到產生的特徵對應清單。 此參數可以是 numpy 陣列或疏鬆矩陣的清單,其中每個陣列專案 (raw_index, generated_index) 是每個原始產生的特徵組的權數。 其他項目會設定為零。 針對一連串轉換 [t1, t2, ..., tn] 從原始特徵產生產生的特徵,特徵對應清單會對應至原始到產生的對應,順序與 t1、t2 等相同。如果從 t1 到 tn 的整體原始到產生的特徵對應可用,則可以傳遞單一元素清單中的該功能對應。

只應指定 『transformations』 或 『feature_maps』 中的一個參數來產生原始說明。 指定這兩者會導致設定例外狀況。

備註

MimicWrapper 可用來說明機器學習模型,而且與 AutoML 搭配使用特別有效。 例如,在模組中使用 automl_setup_model_explanations 函<xref:azureml.train.automl.runtime.automl_explain_utilities>式,您可以使用 MimicWrapper 來計算和可視化特徵重要性。 如需詳細資訊,請參閱 可解譯性:自動化機器學習中的模型說明

在下列範例中,MimicWrapper 用於分類問題中。


   from azureml.interpret.mimic_wrapper import MimicWrapper
   explainer = MimicWrapper(ws, automl_explainer_setup_obj.automl_estimator,
                explainable_model=automl_explainer_setup_obj.surrogate_model,
                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,
                explainer_kwargs=automl_explainer_setup_obj.surrogate_model_params)

如需此範例的詳細資訊,請參閱此 筆記本

方法

explain

說明模型的行為,並選擇性地上傳儲存和視覺效果的說明。

explain

說明模型的行為,並選擇性地上傳儲存和視覺效果的說明。

explain(explanation_types, eval_dataset=None, top_k=None, upload=True, upload_datasets=False, tag='', get_raw=False, raw_feature_names=None, experiment_name='explain_model', raw_eval_dataset=None, true_ys=None)

參數

名稱 Description
explanation_types
必要

字串清單,表示所需的說明類型。 目前支援「全域」和「本機」。 兩者都可以一次傳入;只會傳回一個說明。

eval_dataset

用來產生說明的數據集標識碼或一般數據集。

預設值: None
top_k
int

盡可能將傳回和儲存在執行歷程記錄中的數據量限制為前 k 個功能。

預設值: None
upload

如果為 True,說明會自動上傳至記憶體和視覺效果的執行歷程記錄。 如果未在初始化時傳入執行,則會建立一個。

預設值: True
upload_datasets

如果設定為 True 且未傳入任何數據集標識碼,評估數據集將會上傳至 Azure 記憶體。 這會改善 Web 檢視中可用的視覺效果。

預設值: False
tag
必要
str

要附加至說明的字串,以在上傳之後與其他人區別。

get_raw

如果在初始化期間傳入 True 和 參數 feature_maps ,則傳回的說明會用於原始特徵。 如果為 False 或未指定,則說明會與傳入的數據完全相同。

預設值: False
raw_feature_names

原始特徵名稱的清單,取代建構函式中的工程特徵名稱。

預設值: None
experiment_name
str

如果 為 True,但初始化期間未傳入任何執行,則提供說明 upload 所需的名稱

預設值: explain_model
raw_eval_dataset

要上傳的原始評估數據以取得原始說明。

預設值: None
true_ys
list | <xref:pandas.Dataframe> | ndarray

評估範例的真正標籤。

預設值: None

傳回

類型 Description

說明物件。

屬性

explainer

取得包裝函式在內部使用的解釋器。

傳回

類型 Description

包裝函式在內部使用的解釋器。