我有一个由大约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)
答案 0 :(得分:-1)
您问我们如何制作它,以便您可以过度使用您的模型......
如果训练集中有一半对,我的排名将不起作用 例如,从那以后,测试集的排名将会丢失一些 对...
如果您的对中的一些(大多数!)不在测试集中,您的排名必须,否则生成网络的重点是什么?
无论如何,你所要求的在数学上是不可能的。你可以按照你问的方式分开段落的唯一方法是你有两个完全不相关的集合,根本没有重叠。如果您将段落视为图形中的节点,将连接想象为矢量,那么最好的情况是最终得到两个岛屿,它们之间只有一个连接。如果该连接位于第1段和第2段之间,那么很明显,这两者必须在每组中至少有一个配对。