StratifiedKFold#

class sklearn.model_selection.StratifiedKFold(n_splits=5, *, shuffle=False, random_state=None)[原始碼]#

分層 K 折交叉驗證器。

提供訓練/測試索引以將資料分割為訓練/測試集。

此交叉驗證物件是 KFold 的變體,會傳回分層的摺疊。這些摺疊會保留每個類別的樣本百分比。

請在使用者指南中閱讀更多內容。

如需視覺化交叉驗證行為以及比較常見的 scikit-learn 分割方法,請參閱在 scikit-learn 中視覺化交叉驗證行為

參數:
n_splitsint,預設值=5

摺疊的數量。必須至少為 2。

在 0.22 版中變更:n_splits 預設值從 3 變更為 5。

shufflebool,預設值=False

是否在將每個類別的樣本分割成批次之前先打亂每個類別的樣本。請注意,每個分割中的樣本不會被洗牌。

random_stateint、RandomState 實例或 None,預設值=None

shuffle 為 True 時,random_state 會影響索引的順序,這會控制每個類別的每個摺疊的隨機性。否則,請將 random_state 保留為 None。傳遞一個 int 以便在多個函數呼叫中產生可重複的輸出。請參閱詞彙表

重複分層 K 折 n 次。

注意事項

  • 該實作旨在

  • 產生測試集,使所有測試集都包含相同的類別分佈,或盡可能接近。

  • 不因類別標籤而異:將 y = ["Happy", "Sad"] 重新標記為 y = [1, 0] 不應變更產生的索引。

  • shuffle=False 時,保留資料集排序中的順序相依性:某些測試集中來自類別 k 的所有樣本在 y 中是連續的,或者在 y 中被來自類別 k 以外的類別的樣本分隔開。

產生測試集,其中最小和最大差異最多一個樣本。

範例

>>> import numpy as np
>>> from sklearn.model_selection import StratifiedKFold
>>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
>>> y = np.array([0, 0, 1, 1])
>>> skf = StratifiedKFold(n_splits=2)
>>> skf.get_n_splits(X, y)
2
>>> print(skf)
StratifiedKFold(n_splits=2, random_state=None, shuffle=False)
>>> for i, (train_index, test_index) in enumerate(skf.split(X, y)):
...     print(f"Fold {i}:")
...     print(f"  Train: index={train_index}")
...     print(f"  Test:  index={test_index}")
Fold 0:
  Train: index=[1 3]
  Test:  index=[0 2]
Fold 1:
  Train: index=[0 2]
  Test:  index=[1 3]
get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請檢查使用者指南以了解路由機制如何運作。

傳回值:
routingMetadataRequest

一個 MetadataRequest,封裝路由資訊。

get_n_splits(X=None, y=None, groups=None)[原始碼]#

傳回交叉驗證器中的分割迭代次數。

參數:
X物件

永遠被忽略,存在是為了相容性。

y物件

永遠被忽略,存在是為了相容性。

groups物件

永遠被忽略,存在是為了相容性。

傳回值:
n_splitsint

傳回交叉驗證器中的分割迭代次數。

split(X, y, groups=None)[原始碼]#

產生將資料分割為訓練集和測試集的索引。

參數:
X形狀如 (n_samples, n_features) 的類陣列

訓練資料,其中 n_samples 是樣本數,而 n_features 是特徵數。

請注意,提供 y 足以產生分割,因此可以使用 np.zeros(n_samples) 作為 X 的預留位置,而不是實際的訓練資料。

y形狀如 (n_samples,) 的類陣列

用於監督式學習問題的目標變數。分層是根據 y 標籤完成的。

groups物件

永遠被忽略,存在是為了相容性。

傳回值:
trainndarray

該分割的訓練集索引。

testndarray

該分割的測試集索引。

重複分層 K 折 n 次。

隨機化的 CV 分割器可能會在每次分割呼叫時傳回不同的結果。您可以將 random_state 設定為整數,使結果相同。