SynthesizerAdapter
SynthesizerAdapter 使用各種生成模型處理合成資料生成,並與管線整合。
類別架構
classDiagram
class SynthesizerAdapter {
+config: dict
+synthesizer: Synthesizer
+is_custom_data: bool
+loader_adapter: LoaderAdapter
+__init__(config)
+run() DataFrame
-_extract_loader_config(config) dict
}
class Synthesizer {
+config: dict
+method: str
+model: SDVModel
+create(metadata)
+fit_sample(data) DataFrame
+sample() DataFrame
}
class LoaderAdapter {
+load() tuple~DataFrame, Schema~
}
SynthesizerAdapter ..> Synthesizer : 用於資料合成
SynthesizerAdapter ..> LoaderAdapter : 用於 custom_data 方法
%% 樣式定義
class SynthesizerAdapter {
<<主要類別>>
}
style SynthesizerAdapter fill:#E6E6FA
class Synthesizer {
<<核心模組>>
}
style Synthesizer fill:#4169E1,color:#fff
class LoaderAdapter {
<<選用:自訂資料>>
}
style LoaderAdapter fill:#FFE4E1
note for SynthesizerAdapter "1. 正常模式:使用 Synthesizer 生成資料\n2. 自訂資料模式:使用 LoaderAdapter 載入預先生成的資料\n3. 支援多種合成方法(CTGAN、GaussianCopula 等)"圖例:
- 淺紫色框:SynthesizerAdapter 主類別
- 藍色框:核心合成模組
- 淺粉色框:自訂資料模式使用的 LoaderAdapter
..>:依賴關係
主要功能
- 統一的合成資料生成介面
- 支援多種 SDV 合成方法(考量未來 SDV 版本可能變動,不詳列所有內建方法)
- 自動模型訓練和取樣
- 詮釋資料和隱私保護支援
方法參考
__init__(config: dict)
初始化 SynthesizerAdapter 實例,設定合成配置。
參數:
config:dict,必要- 配置參數字典
- 鍵值:
method、sample_size、epochs、batch_size、use_metadata、random_state
run(input: dict)
執行合成資料生成操作。
參數:
input:dict,必要- 必須包含:
data:pd.DataFrame - 訓練資料metadata:Schema - 資料詮釋資料sample_size:int(選擇性)- 要生成的合成樣本數
- 必須包含:
回傳:
無直接回傳值。使用 get_result() 取得合成資料。
get_result()
取得合成資料生成結果。
回傳:
tuple[pd.DataFrame, Schema]:合成資料和更新後的詮釋資料
set_input(data, metadata)
設定合成器的輸入資料。
參數:
data:pd.DataFrame - 訓練資料metadata:Schema - 資料詮釋資料
使用範例
from petsard.adapter import SynthesizerAdapter
# 設定合成器
adapter = SynthesizerAdapter({
"method": "ctgan",
"sample_size": 1000,
"epochs": 300,
"batch_size": 500,
"random_state": 42
})
# 設定輸入
adapter.set_input(data=df, metadata=schema)
# 執行合成
adapter.run({
"data": df,
"metadata": schema
})
# 取得結果
synthetic_data, synthetic_metadata = adapter.get_result()注意事項
- 這是內部 API,不建議直接使用
- 建議使用 YAML 配置檔和 Executor
- 結果會快取直到下次 run() 呼叫