transform()
執行資料前處理轉換。
語法
def transform(
data: pd.DataFrame
) -> pd.DataFrame參數
- data : pd.DataFrame, required
- 待轉換的資料集
- 必要參數
- 應與訓練時使用的資料具有相同結構
返回值
- pd.DataFrame
- 轉換後的資料
- 已套用所有前處理步驟
說明
transform() 方法用於執行實際的資料轉換。此方法會:
- 按照訓練時設定的序列執行各個處理步驟
- 依序套用缺失值處理、離群值處理、編碼、縮放等操作
- 返回轉換後的資料
此方法必須在 fit() 之後呼叫。
基本範例
from petsard import Loader, Processor
# 載入資料
loader = Loader('data.csv', schema='schema.yaml')
data, schema = loader.load()
# 訓練處理器
processor = Processor(metadata=schema)
processor.fit(data)
# 轉換資料
processed_data = processor.transform(data)
print(f"原始資料形狀: {data.shape}")
print(f"處理後形狀: {processed_data.shape}")轉換不同資料集
from petsard import Processor
# 在訓練集上訓練
processor = Processor(metadata=schema)
processor.fit(train_data)
# 轉換訓練集
train_processed = processor.transform(train_data)
# 使用相同的轉換器轉換測試集
test_processed = processor.transform(test_data)檢查轉換結果
import pandas as pd
from petsard import Processor
processor = Processor(metadata=schema)
processor.fit(data)
processed_data = processor.transform(data)
# 比較轉換前後
print("轉換前:")
print(data.describe())
print("\n轉換後:")
print(processed_data.describe())
# 檢查缺失值
print(f"\n轉換前缺失值數量: {data.isna().sum().sum()}")
print(f"轉換後缺失值數量: {processed_data.isna().sum().sum()}")轉換流程
開始
↓
檢查是否已訓練
↓
複製輸入資料
↓
按序列執行處理:
1. Missing: 填補缺失值
↓
2. Outlier: 處理離群值
↓
3. Encoder: 編碼類別變數
↓ (協調器調整欄位)
4. Scaler: 正規化數值
↓
返回處理後的資料
↓
結束處理步驟說明
1. 缺失值處理(Missing)
- 使用訓練時學習的統計值填補
- 例如:平均值、中位數、眾數
2. 離群值處理(Outlier)
- 識別並處理異常值
- 使用訓練時計算的閾值
3. 編碼(Encoder)
- 將類別變數轉換為數值
- 可能會增加欄位數量(如 One-Hot 編碼)
4. 縮放(Scaler)
- 正規化數值範圍
- 使用訓練時學習的參數(均值、標準差等)
注意事項
- 必須先呼叫
fit()訓練處理器 - 轉換的資料必須與訓練資料具有相同的欄位結構
- 某些編碼方式(如 One-Hot)會改變欄位數量
- 轉換後的資料類型可能與原始資料不同
- 返回的是資料的副本,不會修改原始資料
- 可以重複呼叫以轉換多個資料集
- 所有轉換都使用相同的訓練參數
- 離群值處理可能會移除部分資料列