當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn StratifiedGroupKFold用法及代碼示例


本文簡要介紹python語言中 sklearn.model_selection.StratifiedGroupKFold 的用法。

用法:

class sklearn.model_selection.StratifiedGroupKFold(n_splits=5, shuffle=False, random_state=None)

具有非重疊組的分層K-Folds 迭代器變體。

此交叉驗證對象是 StratifiedKFold 的變體,嘗試返回具有不重疊組的分層折疊。通過保留每個類別的樣本百分比來進行折疊。

同一組不會出現在兩個不同的折疊中(不同組的數量必須至少等於折疊的數量)。

GroupKFold 和 StratifiedGroupKFold 之間的區別在於,前者嘗試創建平衡折疊,以便每個折疊中不同組的數量大致相同,而 StratifiedGroupKFold 嘗試創建保留每個折疊中樣本百分比的折疊。考慮到分割之間不重疊組的約束,盡可能多地分類。

在用戶指南中閱讀更多信息。

參數

n_splits整數,默認=5

折疊次數。必須至少為 2。

shuffle布爾,默認=假

是否在分成批次之前對每個類的樣本進行洗牌。請注意,每個拆分中的樣本不會被打亂。此實現隻能對具有大致相同 y 分布的組進行 shuffle,不會執行全局 shuffle。

random_stateint 或 RandomState 實例,默認=無

shuffle 為 True 時,random_state 會影響索引的順序,從而控製每個類的每次折疊的隨機性。否則,將 random_state 保留為 None 。傳遞 int 以在多個函數調用之間實現可重現的輸出。請參閱術語表。

注意

該實施旨在:

  • 對於微不足道的組,盡可能模仿 StratifiedKFold 的行為(例如,當每個組僅包含一個樣本時)。
  • 對類標簽保持不變:將 y = ["Happy", "Sad"] 重新標記為 y = [1, 0] 不應更改生成的索引。
  • 盡可能基於樣本進行分層,同時保持非重疊組約束。這意味著在某些情況下,當少數組包含大量樣本時,將無法進行分層,並且行為將接近 GroupKFold。

例子

>>> import numpy as np
>>> from sklearn.model_selection import StratifiedGroupKFold
>>> X = np.ones((17, 2))
>>> y = np.array([0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>> groups = np.array([1, 1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 5, 6, 6, 7, 8, 8])
>>> cv = StratifiedGroupKFold(n_splits=3)
>>> for train_idxs, test_idxs in cv.split(X, y, groups):
...     print("TRAIN:", groups[train_idxs])
...     print("      ", y[train_idxs])
...     print(" TEST:", groups[test_idxs])
...     print("      ", y[test_idxs])
TRAIN: [1 1 2 2 4 5 5 5 5 8 8]
       [0 0 1 1 1 0 0 0 0 0 0]
 TEST: [3 3 3 6 6 7]
       [1 1 1 0 0 0]
TRAIN: [3 3 3 4 5 5 5 5 6 6 7]
       [1 1 1 1 0 0 0 0 0 0 0]
 TEST: [1 1 2 2 8 8]
       [0 0 1 1 0 0]
TRAIN: [1 1 2 2 3 3 3 6 6 7 8 8]
       [0 0 1 1 1 1 1 0 0 0 0 0]
 TEST: [4 5 5 5 5]
       [1 0 0 0 0]

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.model_selection.StratifiedGroupKFold。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。