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() 呼叫