在 python 中训练测试拆分但考虑患者信息?

Posted

技术标签:

【中文标题】在 python 中训练测试拆分但考虑患者信息?【英文标题】:train test split in python but consider patient information? 【发布时间】:2021-06-08 11:36:51 【问题描述】:

我想知道是否有一种简单的方法可以在 python 中进行训练测试拆分(主要对交叉验证感兴趣),这样我最终不会在训练和测试中得到来自同一患者的数据点?也就是说,我想首先将患者分成训练和测试,然后进行相应的观察。

这种场景是否有功能,还是我必须手动编写代码?

【问题讨论】:

【参考方案1】:

Sklearn GroupKFold 应该可以解决这个问题。具有非重叠组的 K 折迭代器变体。同一组不会出现在两个不同的折叠中:

from sklearn.model_selection import GroupKFold

X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([1, 2, 3, 4])
groups = np.array([0, 0, 2, 2])
group_kfold = GroupKFold(n_splits=2)

group_kfold.get_n_splits(X, y, groups)

【讨论】:

以上是关于在 python 中训练测试拆分但考虑患者信息?的主要内容,如果未能解决你的问题,请参考以下文章

数据集拆分:训练集、验证集、测试集

在 Python Scikit-Learn 中训练测试拆分得分高但 CV 得分低

根据python中训练和测试集中的时间戳为每个用户拆分数据集

在 Python 中将时间序列数据拆分为训练测试集和有效集

python 将数据拆分为训练/测试数据集。

如何在不拆分数据帧的情况下传递不同的数据集进行训练和测试。 (Python)?