我正在尝试使用分层采样将我的图像数据集划分为训练集和验证集,但是scykit-learn包中的train_test_split方法出现了问题。
每个图像都经过多标签处理,执行一次热编码后,结果是:
trainPaths=np.array(trainPaths)
trainLabels=np.array(trainLabels)
mlb=MultiLabelBinarizer()
trainLabels=mlb.fit_transform(trainLabels)
print(mlb.classes_)
['空中''荷兰人''眼睛''地面''高''臀部''膝盖''低''头顶','肩膀']
print(trainPaths.shape)
print(trainLabels.shape)
(3835,) (3835,10)
因此,两个数据的样本数应保持一致,并且一键编码后标签有10列。 但是,当我尝试执行采样时,会发生这种情况:
(trainPaths, valPaths, trainLabels, valLabels)=train_test_split(trainPaths, trainLabels, test_size=0.15, random_state=42, stratify=mlb.classes_)
ValueError:找到输入样本数量不一致的输入变量:[3835,10]
但是,如果我不声明'stratify'选项,则不会发生该错误。数据有问题吗?或者使用多标签样品无法进行分层采样?