get_config()
取得處理器的配置設定。
語法
def get_config(
col: list = None
) -> dict參數
- col : list, optional
- 要取得配置的欄位名稱列表
- 預設值:
None(返回所有欄位的配置)
返回值
- dict
- 處理器配置字典
- 結構:
{處理類型: {欄位名稱: 處理器實例}}
說明
get_config() 方法用於檢視處理器的當前配置。可以用來:
- 查看所有欄位的處理方式
- 檢查特定欄位的配置
- 驗證配置是否符合預期
基本範例
from petsard import Loader, Processor
# 載入資料
loader = Loader('data.csv', schema='schema.yaml')
data, schema = loader.load()
# 建立處理器
processor = Processor(metadata=schema)
# 取得所有欄位的配置
config = processor.get_config()
# 檢視配置
for proc_type, fields in config.items():
print(f"\n{proc_type}:")
for field, proc_obj in fields.items():
if proc_obj is not None:
print(f" {field}: {type(proc_obj).__name__}")取得特定欄位配置
from petsard import Processor
processor = Processor(metadata=schema)
# 只取得特定欄位的配置
config = processor.get_config(col=['age', 'income', 'gender'])
print("age, income, gender 的配置:")
for proc_type, fields in config.items():
print(f"\n{proc_type}:")
for field, proc_obj in fields.items():
if proc_obj is not None:
print(f" {field}: {type(proc_obj).__name__}")返回結構範例
{
'missing': {
'age': <MissingMean instance>,
'income': <MissingMean instance>,
'gender': <MissingDrop instance>
},
'outlier': {
'age': <OutlierIQR instance>,
'income': <OutlierIQR instance>,
'gender': None
},
'encoder': {
'age': None,
'income': None,
'gender': <EncoderUniform instance>
},
'scaler': {
'age': <ScalerStandard instance>,
'income': <ScalerStandard instance>,
'gender': None
}
}使用案例
1. 驗證配置
processor = Processor(metadata=schema, config=custom_config)
config = processor.get_config()
# 驗證特定欄位使用正確的處理器
assert type(config['encoder']['gender']).__name__ == 'EncoderOneHot'
print("配置驗證通過!")2. 檢查預設配置
# 使用預設配置
processor = Processor(metadata=schema)
config = processor.get_config()
# 查看數值型欄位的預設處理方式
numerical_fields = ['age', 'income', 'hours_per_week']
for field in numerical_fields:
print(f"{field}:")
for proc_type in ['missing', 'outlier', 'scaler']:
proc = config[proc_type][field]
if proc:
print(f" {proc_type}: {type(proc).__name__}")3. 比較配置差異
# 建立兩個不同配置的處理器
processor1 = Processor(metadata=schema)
processor2 = Processor(metadata=schema, config=custom_config)
config1 = processor1.get_config(col=['age'])
config2 = processor2.get_config(col=['age'])
print("處理器1的配置:")
for proc_type, fields in config1.items():
if fields['age']:
print(f" {proc_type}: {type(fields['age']).__name__}")
print("\n處理器2的配置:")
for proc_type, fields in config2.items():
if fields['age']:
print(f" {proc_type}: {type(fields['age']).__name__}")注意事項
- 返回的配置是處理器實例,不是字串名稱
None值表示該處理類型不套用於該欄位- 可以在任何時候呼叫此方法,不需要先
fit() - 配置會在
update_config()後更新 - 如果提供的欄位名稱不存在,會在返回的配置中被忽略
- 全域轉換處理器(如
outlier_isolationforest)會套用到所有欄位