DescriberAdapter
DescriberAdapter 處理資料描述和比較,支援單一資料集描述和多資料集比較分析。
類別架構
classDiagram class DescriberAdapter { +config: dict +source: dict +describer: Describer +__init__(config) +run() dict~str, DataFrame~ } class Describer { +config: dict +mode: str +method: str +create() +eval(data) dict~str, DataFrame~ } class BaseEvaluator { <<抽象類別>> +evaluate() dict } class DescriberDescribe { +evaluate() dict } class DescriberCompare { +evaluate() dict } DescriberAdapter ..> Describer : 用於描述 Describer --> BaseEvaluator : 創建 BaseEvaluator <|-- DescriberDescribe BaseEvaluator <|-- DescriberCompare %% 樣式定義 class DescriberAdapter { <<主要類別>> } style DescriberAdapter fill:#E6E6FA class Describer { <<核心模組>> } style Describer fill:#4169E1,color:#fff style BaseEvaluator fill:#9370DB,color:#fff style DescriberDescribe fill:#FFE4E1 style DescriberCompare fill:#FFE4E1 note for DescriberAdapter "1. 描述模式:單一資料集描述\n2. 比較模式:兩個資料集比較\n3. 靈活的來源指定\n4. 描述前自動對齊資料型別"
圖例:
- 淺紫色框:DescriberAdapter 主類別
- 藍色框:核心描述模組
- 紫色框:資料對齊模組
- 淺粉色框:配置類別
..>
:依賴關係-->
:擁有關係
主要功能
- 統一的資料描述介面
- 靈活的資料源選擇(透過
source
參數) - 支援兩種模式:describe(單一資料集)、compare(資料集比較)
- 自動資料類型對齊(使用 Schema)
- 支援多種統計方法和 JS Divergence 計算
方法參考
__init__(config: dict)
初始化 DescriberAdapter 實例。
參數:
config
:dict,必要- 配置參數字典
- 必須包含
source
鍵(資料來源) - 可選
method
鍵:default、describe、compare - 可選
mode
鍵:自動根據 source 數量決定
run(input: dict)
執行資料描述或比較,包括自動資料類型對齊。
參數:
input
:dict,必要- 輸入參數字典
- 包含
data
字典(資料集) - 可選
metadata
用於資料類型對齊
回傳:
無直接回傳值。使用 get_result()
取得結果。
set_input(status)
設定描述器的輸入資料。
參數:
status
:Status,必要- 系統狀態物件
- 根據 source 配置提取資料
回傳:
dict
:包含描述所需的資料字典
get_result()
取得描述結果。
回傳:
dict[str, pd.DataFrame]
:描述結果字典
使用範例
單一資料集描述
from petsard.adapter import DescriberAdapter
# 描述單一資料集
adapter = DescriberAdapter({
"source": "Loader", # 或 ["Loader"]
"method": "describe",
"describe_method": ["mean", "median", "std", "corr"]
})
# 執行描述
adapter.run({})
# 取得結果
results = adapter.get_result()
資料集比較
# 比較兩個資料集
adapter = DescriberAdapter({
"source": {
"base": "Splitter.train",
"target": "Synthesizer"
},
"method": "compare",
"stats_method": ["mean", "std", "jsdivergence"],
"compare_method": "pct_change"
})
# 執行比較
adapter.run({})
# 取得結果
comparison_results = adapter.get_result()
工作流程
- Source 解析:解析 source 參數決定資料來源
- Mode 決定:
- 1 個 source:describe 模式
- 2 個 source:compare 模式
- 資料收集:從 Status 收集指定的資料
- Schema 取得:嘗試取得 metadata 用於資料對齊
- 資料類型對齊(有 Schema 時)
- 執行描述或比較
Source 參數格式
描述模式(單一資料源)
# 字串格式
source: "Loader"
# 列表格式
source: ["Synthesizer"]
比較模式(兩個資料源)
# 字典格式(推薦)
source:
base: "Splitter.train"
target: "Synthesizer"
# 向後相容格式
source:
ori: "Splitter.train"
syn: "Synthesizer"
資料源語法
- 簡單格式:
"ModuleName"
- 取該模組的第一個可用資料 - 精確格式:
"ModuleName.key"
- 取該模組的特定鍵值資料- 例如:
"Splitter.train"
、"Splitter.validation"
- 例如:
注意事項
- 這是內部 API,不建議直接使用
- 建議使用 YAML 配置檔和 Executor
- compare 模式會重用 DescriberDescribe 的統計功能
- 參數命名建議使用
base
/target
取代舊的ori
/syn
- 結果會快取直到下次 run() 呼叫