我有一个包含列的多类数据集:
File_name Label Value.
abcd A 74
bwld B 72
我有 4 个唯一标签,我想创建一个名为"is_valid"的新列,它是一个布尔值,它将一个 true 值分配给每种标签类型的 10% 的数据。 本质上,我正在尝试为每个标签的 10% 创建一个 train-val 拆分,并创建一个列来显示该行是否已用于训练或验证,使其看起来像这样:
File_name Label Value is_valid
abcd A 74 True
bwld B 72 False
我该怎么做?
我知道这可以使用火车测试拆分来完成,但我想将其用于演示:(
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(file_name, label,
test_size=0.2, random_state=40, stratify=label)
val_split = 0.1
df['is_valid'] = False
for label in df['Label'].unique():
indexes = df[df['Label']==label].sample(frac=val_split)
df.loc[(indexes.index.values), 'is_valid'] = True