Splitter
Splitter(
method=None,
num_samples=1,
train_split_ratio=0.8,
random_state=None
)
用於實驗目的,將資料分割為訓練集和驗證集。設計用於支援如 Anonymeter 的隱私評估任務,多次分割可降低合成資料評估的偏誤。對於不平衡的資料集,建議使用較大的 num_samples
。
參數
method
(str, optional):載入已分割資料的方法- 預設值:無
- 可用值:‘custom_data’ - 從檔案路徑載入分割資料
num_samples
(int, optional):重複抽樣次數- 預設值:1
train_split_ratio
(float, optional):訓練集的資料比例- 預設值:0.8
- 必須介於 0 和 1 之間
random_state
(int | float | str, optional):用於重現結果的隨機種子- 預設值:無
範例
from petsard import Splitter
# 基本用法
split = Splitter(num_samples=5, train_split_ratio=0.8)
split.split(data=df)
train_df = split.data[1]['train'] # 第一次分割的訓練集
方法
split()
split.split(data, exclude_index=None, metadata=None)
執行資料分割。
參數
data
(pd.DataFrame, optional):要分割的資料集- 若
method='custom_data'
則不需提供
- 若
exclude_index
(list[int], optional):要在抽樣時排除的索引列表- 預設值:無
metadata
(Metadata, optional):資料集的 Metadata 物件- 預設值:無
回傳值
無
- 分割結果儲存於:
Splitter.data
:包含所有分割結果的字典Splitter.metadata
:資料集詮釋資料
- 存取分割資料的方式:
Splitter.data[sample_num]['train']
:特定樣本的訓練集Splitter.data[sample_num]['validation']
:特定樣本的驗證集
屬性
data
:分割資料集字典- 格式:
{sample_num: {'train': pd.DataFrame, 'validation': pd.DataFrame}}
- 格式:
metadata
:資料集詮釋資料(Metadata 物件)config
:設定字典,包含:- 若
method=None
:num_samples
(int):重複抽樣次數train_split_ratio
(float):分割比例random_state
(int | float | str):隨機種子
- 若
method='custom_data'
:method
(str):載入方法filepath
(dict):資料檔案路徑- 其他 Loader 設定
- 若