留一組交叉驗證 (LeaveOneGroupOut)#

class sklearn.model_selection.LeaveOneGroupOut[source]#

留一組交叉驗證器。

提供訓練/測試索引以分割數據,使得每個訓練集都包含除屬於特定組的所有樣本之外的所有樣本。任意領域特定的組信息以整數數組的形式提供,該數組對每個樣本的組進行編碼。

例如,組可以是樣本的收集年份,因此可以針對基於時間的分割進行交叉驗證。

使用者指南中閱讀更多信息。

參見

GroupKFold

K折疊迭代器變體,具有非重疊組。

注意事項

分割根據要排除的組的索引順序排列。第一個分割的測試集由在 groups 中索引最低的組組成,依此類推。

範例

>>> import numpy as np
>>> from sklearn.model_selection import LeaveOneGroupOut
>>> X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
>>> y = np.array([1, 2, 1, 2])
>>> groups = np.array([1, 1, 2, 2])
>>> logo = LeaveOneGroupOut()
>>> logo.get_n_splits(X, y, groups)
2
>>> logo.get_n_splits(groups=groups)  # 'groups' is always required
2
>>> print(logo)
LeaveOneGroupOut()
>>> for i, (train_index, test_index) in enumerate(logo.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], group=[2 2]
  Test:  index=[0 1], group=[1 1]
Fold 1:
  Train: index=[0 1], group=[1 1]
  Test:  index=[2 3], group=[2 2]
get_metadata_routing()[source]#

獲取此物件的元數據路由。

請查看 使用者指南,了解路由機制的運作方式。

返回:
路由MetadataRequest

一個封裝路由信息的 MetadataRequest

get_n_splits(X=None, y=None, groups=None)[source]#

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

參數:
Xobject

始終被忽略,為兼容性而存在。

yobject

始終被忽略,為兼容性而存在。

groupsarray-like of shape (n_samples,)

將數據集分割為訓練/測試集時使用的樣本組標籤。必須始終指定此「groups」參數以計算分割次數,但可以省略其他參數。

返回:
返回:

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

n_splitsint

請求傳遞給 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

splitgroups 參數的元數據路由。

返回:
selfobject

更新後的物件。

split(X, y=None, groups=None)[source]#

生成索引以將數據分割為訓練集和測試集。

參數:
Xarray-like of shape (n_samples, n_features)

訓練數據,其中 n_samples 是樣本數,n_features 是特徵數。

yarray-like of shape (n_samples,), default=None

監督學習問題的目標變數。

groupsarray-like of shape (n_samples,)

將數據集分割為訓練/測試集時使用的樣本組標籤。

產生:
trainndarray

該分割的訓練集索引。

testndarray

該分割的測試集索引。