LeavePGroupsOut#
- class sklearn.model_selection.LeavePGroupsOut(n_groups)#
Leave P Group(s) Out交叉验证器。
提供训练/测试索引,以根据第三方提供的组来拆分数据。该组信息可以用于将样本的任意特定领域分层编码为整数。
例如,组可以是样本收集的年份,从而允许进行基于时间的交叉验证。
LeavePGroupsOut和LeaveOneGroupOut的区别在于,前者构建的测试集包含分配给
p
个不同组值的所有样本,而后者使用分配给相同组的所有样本。更多信息请参阅 用户指南 。
- Parameters:
- n_groupsint
在测试拆分中要保留的组数(
p
)。
See also
GroupKFold
具有非重叠组的K折迭代器变体。
Examples
>>> import numpy as np >>> from sklearn.model_selection import LeavePGroupsOut >>> X = np.array([[1, 2], [3, 4], [5, 6]]) >>> y = np.array([1, 2, 1]) >>> groups = np.array([1, 2, 3]) >>> lpgo = LeavePGroupsOut(n_groups=2) >>> lpgo.get_n_splits(X, y, groups) 3 >>> lpgo.get_n_splits(groups=groups) # 'groups' 是始终需要的 3 >>> print(lpgo) LeavePGroupsOut(n_groups=2) >>> for i, (train_index, test_index) in enumerate(lpgo.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], group=[3] Test: index=[0 1], group=[1 2] Fold 1: Train: index=[1], group=[2] Test: index=[0 2], group=[1 3] Fold 2: Train: index=[0], group=[1] Test: index=[1 2], group=[2 3]
- get_metadata_routing()#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
- Returns:
- routingMetadataRequest
MetadataRequest
封装的 路由信息。
- get_n_splits(X=None, y=None, groups=None)#
返回交叉验证器中的拆分迭代次数。
- Parameters:
- Xobject
总是被忽略,存在是为了兼容性。
- yobject
总是被忽略,存在是为了兼容性。
- groupsarray-like of shape (n_samples,)
在将数据集拆分为训练/测试集时使用的样本的组标签。必须始终指定此’groups’参数以计算拆分次数,尽管可以省略其他参数。
- Returns:
- n_splitsint
返回交叉验证器中的拆分迭代次数。
- set_split_request(*, groups: bool | None | str = '$UNCHANGED$') LeavePGroupsOut #
Request metadata passed to the
split
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed tosplit
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it tosplit
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters:
- groupsstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
groups
parameter insplit
.
- Returns:
- selfobject
The updated object.
- split(X, y=None, groups=None)#
生成索引以将数据拆分为训练集和测试集。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
训练数据,其中
n_samples
是样本数量 且n_features
是特征数量。- y形状为 (n_samples,) 的类数组,默认=None
监督学习问题的目标变量。
- groups形状为 (n_samples,) 的类数组
在将数据集拆分为训练/测试集时使用的样本组标签。
- Yields:
- trainndarray
该拆分的训练集索引。
- testndarray
该拆分的测试集索引。