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

Python for 具有多个变量的循环迭代

Python for 具有多个变量的循环迭代

陪伴而非守候 2022-06-22 17:53:10
我正在同时对多个数据集执行 k 折验证。我正在使用KFoldfromsklearn进行 10 倍验证。基本上,这将数据集划分为 10 个部分,并在其中 9 个部分上训练分类器,然后在剩余的第 10 个部分测试结果,然后执行相同的例程,但将测试集切换为新的第 10 个分区,现在包含旧测试集在训练集中。我可以使用以下代码为单个数据集编写一个 for 循环:for train, test in kfold.split(data):    print(train)    print(test)其输出如下:[1 2 3 4 5 6 7 8 9][0][0 2 3 4 5 6 7 8 9][1][0 1 3 4 5 6 7 8 9][2][0 1 2 4 5 6 7 8 9][3][0 1 2 3 5 6 7 8 9][4][0 1 2 3 4 6 7 8 9][5][0 1 2 3 4 5 7 8 9][6][0 1 2 3 4 5 6 8 9][7][0 1 2 3 4 5 6 7 9][8][0 1 2 3 4 5 6 7 8][9]其中第一个数组是要从数组的初始数据集数组中使用的训练集的索引,第二个数组是测试集的索引。我可以让它正确地迭代一个数据集。但是,我将如何同时为多个数据集执行此操作?例如,如果我想使用来自多个集合的特定折叠创建一个分类器。我尝试了以下方法:for train0, test0, train1, test1 in kfold.split(data0), kfold.split(data1):    # code但我收到以下错误:ValueError: too many values to unpack (expected 4)
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

您可以使用并行迭代zip:


for kfold0, kfold1 in zip(kfold.split(data0), kfold.split(data1)):

   train0, test0 = kfold0

   train1, test1 = kfold1

   ...

您甚至可以直接在循环中解压缩元组,尽管我个人认为这不太可读:


for (train0, test0), (train1, test1) in zip(kfold.split(data0), kfold.split(data1)):

   ...


查看完整回答
反对 回复 2022-06-22
  • 1 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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