scikit-learn - 交叉验证后如何获取数据?
问题描述
我正在尝试使用带有 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']
我该怎么办?
解决方案
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']
推荐阅读
- android - 错误:包 com.getcapacitor.community.facebooklogin 在类星体 + 电容器中不存在错误
- struct - Julia:结构和方法构造函数中的函数
- vue.js - 我如何将代码 javascript 转换为 vue js
- mongodb - MongoDB 存储桶边界
- wordpress - 被黑的 Wordpress 管理员帐户
- sql - 按列分组并计算百分比,windows函数分区按
- ansible - 如何处理 ansible 的 yaml 文件中的长 URL?
- javascript - 寻找正则表达式模式以删除 JSON 字符串中的内容
- reactjs - 当父组件的状态更新时反应导航弹出
- python - 根据索引张量从张量中提取子张量