【问题标题】:How can I get data after cross-validation?交叉验证后如何获取数据?
【发布时间】:2021-05-19 14:35:34
【问题描述】:

我正在尝试使用带有 Xception 的迁移学习为 7 个类制作图像分类器。现在我正在尝试实施交叉验证。我知道 KFold 返回索引,但如何获取数据值。

from sklearn.model_selection import KFold
import numpy as np

sample = np.array(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'])

kf = KFold(n_splits=3, shuffle=True)
for train_index, test_index in kf.split(sample):
    print("TRAIN:", train_index, "TEST:", test_index)

返回

TRAIN: [1 2 3 4 6 7] TEST: [0 5 8]
TRAIN: [0 1 2 4 5 8] TEST: [3 6 7]
TRAIN: [0 3 5 6 7 8] TEST: [1 2 4]

但我想要的是

TRAIN: ['B', 'C', 'D', 'E', 'G', 'H'] TEST: ['A', 'F', 'I']
TRAIN: ['A', 'B', 'C', 'E', 'F', 'I'] TEST: ['D', 'G', 'H']
TRAIN: ['A', 'D', 'F', 'G', 'H', 'I'] TEST: ['B', 'C', 'E']

我该怎么办?

【问题讨论】:

    标签: scikit-learn cross-validation k-fold


    【解决方案1】:

    kf.split 返回索引,而不是实际样本。您只需更改为:

    for train_index, test_index in kf.split(sample):
        print("TRAIN:", sample[train_index], "TEST:", sample[test_index])
    

    结果:

    TRAIN: ['A' 'B' 'C' 'E' 'F' 'H'] TEST: ['D' 'G' 'I']
    TRAIN: ['A' 'D' 'F' 'G' 'H' 'I'] TEST: ['B' 'C' 'E']
    TRAIN: ['B' 'C' 'D' 'E' 'G' 'I'] TEST: ['A' 'F' 'H']
    

    【讨论】:

      猜你喜欢
      • 2016-06-01
      • 2019-06-15
      • 2019-05-21
      • 2021-04-11
      • 1970-01-01
      • 2017-06-23
      • 2018-01-06
      • 1970-01-01
      • 2021-08-29
      相关资源
      最近更新 更多