gpt4 book ai didi

python - 分组和拆分以避免泄漏

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:23 25 4
gpt4 key购买 nike

我有一个 pandas dataframe,其中的数据排列如下:

        filename     label
0 4456723 0
1 4456723_01 0
2 4456723_02 0
3 ab43912 1
4 ab43912_01 1
5 ab43912_03 1
... ... ...

我想在 trainingvalidation 集中随机拆分此 dataframe。虽然如果我这样做,我会引入泄漏,因为这些文件是图像,略有变化但用不同的名称表示,例如 ab43912、ab43912_01、ab43912_03,都是相同的图像,但有一些变化。

有没有什么有效的方法可以对这些文件进行分组,然后在不引起泄漏的情况下进行拆分?

最佳答案

您可以手动随机选择约 80% 的唯一文件句柄。

df = pd.DataFrame({'filename': list('aaabbbcccdddeeefff')})
df['filename'] = df['filename'] + ['', '_01', '_02']*6

# Get the unique handles
files = df.filename.str.split('_').str[0]

# Randomly select ~80%.
m = files.isin(np.random.choice(files.unique(), int(files.nunique()*0.8), replace=False))

# Split
train, test = df.loc[m], df.loc[~m]

实际上,由于 N 较小,我们得到了 2/3-1/3 的拆分

训练:

   filename
0 a
1 a_01
2 a_02
6 c
7 c_01
8 c_02
12 e
13 e_01
14 e_02
15 f
16 f_01
17 f_02

测试:

   filename
3 b
4 b_01
5 b_02
9 d
10 d_01
11 d_02

关于python - 分组和拆分以避免泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57482954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com