为了账号安全,请及时绑定邮箱和手机立即绑定

如何确保来自特定组的所有样本在 sklearn cross_val_predict

如何确保来自特定组的所有样本在 sklearn cross_val_predict

Go
元芳怎么了 2023-01-04 10:10:50
我有一个数据框,其中每个样本都属于一个组。例如:df = a b c group     1 1 2  G1     1 6 1  G1     8 2 8  G3     2 8 7  G2     1 9 2  G2     1 7 2  G3     4 0 2  G4     1 5 1  G4     6 7 8  G5     3 3 7  G6     1 2 2  G6     1 0 5  G7我想运行cross_val_predict,同时确保来自同一组的所有样本都在测试中或所有样本都在训练中。我想将数据分成 4 份 - 但要确保来自同一组的所有行都在测试或训练中。因此,例如,第 0,1 行和第 4,5 行将在训练中,但第 3、6 行 (G3) 将在测试中这可能吗?我在文档中看到了grouparg,但不是很清楚,也没有找到任何示例。
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

用作inGroupKFold的参数:cvcross_val_predict()

scores = cross_val_score(model, X, y, groups, cv=GroupKFold())

请注意,groups数组表示我们希望在同一训练/测试集中的数据组。它不是类标签数组。

例如:

from sklearn.datasets import make_blobs

from sklearn.linear_model import LogisticRegression

from sklearn.model_selection import GroupKFold, cross_val_score


X, y = make_blobs(n_samples=15, random_state=0)


model = LogisticRegression()

groups = [0,0,0,1,1,1,1,2,2,2,2,3,3,3,3]

scores = cross_val_score(model, X, y, groups, cv=GroupKFold(n_splits=3))


print('cross val scores: {}'.format(scores))


查看完整回答
反对 回复 2023-01-04
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号