0

我有一个由大约 500 个不同段落组成的数据集。对于每个段落,我都在尝试查看是否有任何其他段落的链接。基于此,我创建了段落对。我以前尝试将此问题作为二元问题(0 或 1,是否存在链接)来处理,但我现在想尝试排名(为每个段落对分配概​​率)。

我的问题是:如何随机拆分测试集和训练集,但将每个段落的所有段落对保留在同一集中?例如,对于第 1 段,我想要测试集中或训练集中的所有关联对(1-2、1-3、1-4、1-5...1-500)。例如,如果一半对在训练集中,我的排名将不起作用,因为那时测试集的排名将丢失一些对......

格式

A段| B段| 标签 | 特征...


第 1 段 | 第 4 段 | 1 | ...

第 2 段 | 第 6 段 | 1 | ...

第 6 段 | 第 8 段 | 0 | ...

第 10 段 | 第 2 段 | 1 | ...

我正在使用 sklearn train_test_split:

import pandas as pd
from sklearn.model_selection import train_test_split

feature_headers = ['tfidf_cosine', 'count_vec_cosine', 'lda_50topics_cosine', 'lda_200topics_cosine']
target_header = ['label']

train_x, test_x, train_y, test_y = train_test_split(result[feature_headers], result[target_header],
                                                    train_size=0.7)
4

1 回答 1

-1

您在问我们如何制作它,以便您可以过度拟合您的模型......

例如,如果一半对在训练集中,我的排名将不起作用,因为那时测试集的排名将丢失一些对......

如果您的某些(大多数!)对不在测试集中,您的排名必须有效,否则生成网络的意义何在?

无论如何,您要问的问题在数学上是不可能的。您可以按照您的要求将段落分开的唯一方法是您是否有两个完全不相关的集合,并且根本没有重叠。如果您将段落想象为图中的节点,而将连接想象为向量,那么最好的情况是您最终会得到两个岛,它们之间只有一个连接。如果这种联系在第 1 段和第 2 段之间,那么很明显,这两段必须在每组中至少有一对。

于 2018-05-25T12:25:19.200 回答