EvaluatorAdapter
EvaluatorAdapter 處理資料評估,支援原始、合成和控制資料集的比較評估。
類別架構
classDiagram
class EvaluatorAdapter {
+config: dict
+evaluator: Evaluator
+__init__(config)
+run() dict~str, DataFrame~
}
class Evaluator {
+config: dict
+method: str
+create()
+eval(data) dict~str, DataFrame~
}
class BaseEvaluator {
<<抽象類別>>
+evaluate() dict
}
class EvaluatorSDMetrics {
+evaluate() dict
}
class EvaluatorAnonymeter {
+evaluate() dict
}
EvaluatorAdapter ..> Evaluator : 用於評估
Evaluator --> BaseEvaluator : 創建
BaseEvaluator <|-- EvaluatorSDMetrics
BaseEvaluator <|-- EvaluatorAnonymeter
%% 樣式定義
class EvaluatorAdapter {
<<主要類別>>
}
style EvaluatorAdapter fill:#E6E6FA
class Evaluator {
<<核心模組>>
}
style Evaluator fill:#4169E1,color:#fff
style BaseEvaluator fill:#9370DB,color:#fff
style EvaluatorSDMetrics fill:#FFE4E1
style EvaluatorAnonymeter fill:#FFE4E1
note for EvaluatorAdapter "1. 固定資料來源:ori、syn、control\n2. 評估前自動對齊資料型別\n3. 支援多種評估方法\n4. 回傳包含評估結果的字典"圖例:
- 淺紫色框:EvaluatorAdapter 主類別
- 藍色框:核心評估模組
- 紫色框:資料對齊模組
- 淺粉色框:配置類別
..>:依賴關係-->:擁有關係
主要功能
- 統一的資料評估介面
- 自動資料類型對齊(使用 Schema)
- 支援多資料集評估(ori、syn、control)
- 整合各種評估方法(Privacy、Utility、Diagnostic)
- 固定的資料源命名邏輯
方法參考
__init__(config: dict)
初始化 EvaluatorAdapter 實例。
參數:
config:dict,必要- 配置參數字典
- 必須包含
method鍵(評估方法) - 支援的評估方法:privacy、utility、diagnostic 等
run(input: dict)
執行資料評估,包括自動資料類型對齊。
參數:
input:dict,必要- 輸入參數字典
- 包含
data字典(ori、syn、control 資料) - 可選
schema用於資料類型對齊
回傳:
無直接回傳值。使用 get_result() 取得結果。
set_input(status)
設定評估器的輸入資料。
參數:
status:Status,必要- 系統狀態物件
- 自動提取 ori、syn、control 資料
回傳:
dict:包含評估所需的資料字典
get_result()
取得評估結果。
回傳:
dict[str, pd.DataFrame]:評估結果字典
使用範例
from petsard.adapter import EvaluatorAdapter
# 初始化評估器
adapter = EvaluatorAdapter({
"method": "privacy",
"privacy_method": ["membership_inference", "attribute_inference"]
})
# 設定輸入資料(通常由 Executor 自動處理)
input_data = {
"data": {
"ori": original_df,
"syn": synthetic_df,
"control": control_df # 可選
},
"schema": schema # 可選,用於資料類型對齊
}
# 執行評估
adapter.run(input_data)
# 取得結果
results = adapter.get_result()工作流程
- 資料收集:從 Status 收集 ori、syn、control 資料
- Schema 取得:優先順序為 Loader > Splitter > Preprocessor
- 資料類型對齊(有 Schema 時)
- 使用 SchemaMetadater.align() 對齊資料類型
- 確保評估時資料類型一致
- 評估執行:呼叫底層 Evaluator 執行評估
資料源邏輯
EvaluatorAdapter 使用固定的資料源命名:
ori(原始資料):
- 有 Splitter 時:取 Splitter 的 train
- 無 Splitter 時:取 Loader 的結果
syn(合成資料):
- 取前一個模組的結果(通常是 Synthesizer 或 Postprocessor)
control(控制資料):
- 僅在有 Splitter 時存在
- 取 Splitter 的 validation
注意事項
- 這是內部 API,不建議直接使用
- 建議使用 YAML 配置檔和 Executor
- 資料源命名固定,不支援自訂
- 自動處理資料類型對齊,確保評估正確性
- 結果會快取直到下次 run() 呼叫