我正在同時對多個數據集執行 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)):
...
添加回答
舉報
0/150
提交
取消