GroupShuffleSplit#
- class sklearn.model_selection.GroupShuffleSplit(n_splits=5, *, test_size=None, train_size=None, random_state=None)[來源]#
Shuffle-Group(s)-Out 交叉驗證迭代器。
根據第三方提供的群組,提供隨機的訓練/測試索引以分割資料。此群組資訊可以用來將樣本的任意領域特定分層編碼為整數。
舉例來說,群組可以是樣本的採集年份,因此可以針對基於時間的分割進行交叉驗證。
LeavePGroupsOut
和GroupShuffleSplit
之間的差異在於,前者使用大小為p
的所有唯一群組子集來產生分割,而GroupShuffleSplit
則生成使用者定義數量的隨機測試分割,每個分割都有使用者定義的唯一群組比例。例如,相較於
LeavePGroupsOut(p=10)
,計算量較小的替代方案會是GroupShuffleSplit(test_size=10, n_splits=100)
。與其他交叉驗證策略相反,隨機分割不保證所有摺疊中的測試集會互斥,並且可能包含重疊的樣本。然而,對於相當大的數據集來說,這種情況仍然很有可能發生。
注意:參數
test_size
和train_size
是指群組,而不是像ShuffleSplit
中那樣的樣本。請在使用者指南中閱讀更多資訊。
有關交叉驗證行為的可視化以及常見 scikit-learn 分割方法之間的比較,請參考 在 scikit-learn 中視覺化交叉驗證行為。
- 參數:
- n_splitsint,預設值=5
重新洗牌和分割的迭代次數。
- test_sizefloat, int, 預設值=None
如果為 float,則應介於 0.0 和 1.0 之間,表示測試分割中要包含的群組比例(向上取整)。如果為 int,則表示測試群組的絕對數量。如果為 None,則該值設定為訓練大小的補數。如果
train_size
也為 None,則會設定為 0.2。- train_sizefloat 或 int,預設值=None
如果為 float,則應介於 0.0 和 1.0 之間,表示訓練分割中要包含的群組比例。如果為 int,則表示訓練群組的絕對數量。如果為 None,則該值會自動設定為測試大小的補數。
- random_stateint、RandomState 實例或 None,預設值=None
控制產生的訓練和測試索引的隨機性。傳遞 int 以便在多次函數呼叫中產生可重現的輸出。請參閱詞彙表。
另請參閱
隨機劃分 (ShuffleSplit)
洗牌樣本以建立獨立的測試/訓練集。
留 P 分組交叉驗證 (LeavePGroupsOut)
訓練集會排除
p
個群組的所有可能子集。
範例
>>> import numpy as np >>> from sklearn.model_selection import GroupShuffleSplit >>> X = np.ones(shape=(8, 2)) >>> y = np.ones(shape=(8, 1)) >>> groups = np.array([1, 1, 2, 2, 2, 3, 3, 3]) >>> print(groups.shape) (8,) >>> gss = GroupShuffleSplit(n_splits=2, train_size=.7, random_state=42) >>> gss.get_n_splits() 2 >>> print(gss) GroupShuffleSplit(n_splits=2, random_state=42, test_size=None, train_size=0.7) >>> for i, (train_index, test_index) in enumerate(gss.split(X, y, groups)): ... print(f"Fold {i}:") ... print(f" Train: index={train_index}, group={groups[train_index]}") ... print(f" Test: index={test_index}, group={groups[test_index]}") Fold 0: Train: index=[2 3 4 5 6 7], group=[2 2 2 3 3 3] Test: index=[0 1], group=[1 1] Fold 1: Train: index=[0 1 5 6 7], group=[1 1 3 3 3] Test: index=[2 3 4], group=[2 2 2]
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看使用者指南,了解路由機制如何運作。
- 回傳值:
- routingMetadataRequest
一個封裝路由資訊的
MetadataRequest
。
- get_n_splits(X=None, y=None, groups=None)[原始碼]#
回傳交叉驗證器中的分割迭代次數。
- 參數:
- X物件
永遠忽略,為了相容性而存在。
- y物件
永遠忽略,為了相容性而存在。
- groups物件
永遠忽略,為了相容性而存在。
- 回傳值:
- n_splitsint
回傳交叉驗證器中的分割迭代次數。
- set_split_request(*, groups: bool | None | str = '$UNCHANGED$') GroupShuffleSplit [原始碼]#
請求傳遞到
split
方法的中繼資料。請注意,此方法僅在
enable_metadata_routing=True
時才相關(請參閱sklearn.set_config
)。請參閱使用者指南,了解路由機制如何運作。每個參數的選項如下:
True
:請求元數據,如果提供,則傳遞給split
。如果未提供元數據,則忽略請求。False
:不請求元數據,並且元估計器不會將其傳遞給split
。None
:不請求元數據,如果用戶提供元數據,則元估計器會引發錯誤。str
:元數據應以給定的別名而不是原始名稱傳遞給元估計器。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這允許您更改某些參數的請求,而不更改其他參數。在 1.3 版本中新增。
注意
此方法僅在將此估計器用作元估計器的子估計器時相關,例如在
Pipeline
中使用。否則,它不會產生任何影響。- 參數:
- groupsstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
用於
split
中groups
參數的元數據路由。
- 回傳值:
- self物件
更新後的物件。
- split(X, y=None, groups=None)[原始碼]#
產生索引,將數據分割成訓練集和測試集。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列
訓練數據,其中
n_samples
是樣本數,而n_features
是特徵數。- y形狀為 (n_samples,) 的類陣列,預設值為 None
用於監督式學習問題的目標變數。
- groups形狀為 (n_samples,) 的類陣列
在將數據集分割為訓練/測試集時使用的樣本組標籤。
- 產生:
- trainndarray
該分割的訓練集索引。
- testndarray
該分割的測試集索引。
注意事項
隨機化交叉驗證分割器可能會在每次調用 split 時返回不同的結果。您可以通過將
random_state
設置為整數來使結果相同。