【问题标题】:Python algorithm to obtain a randomized negative dataset from a positive datasetPython算法从正数据集中获取随机负数据集
【发布时间】:2012-07-30 13:52:59
【问题描述】:

我有一个包含独特蛋白质对的文件,即阳性数据集。我们称之为infile。 下面是 infile 内容的示例:

Q9VRA8  A1ZBB4
Q03043  Q9VX24
B6VQA0  Q7KML2

条目是制表符分隔的。 随机数据集,我们称之为outfile,必须包含单个蛋白质的组合,它们不能以以任何顺序匹配 infile 的内容。例如,对于上面的第一行,随机输出文件不能包含以下对:

Q9VRA8  A1ZBB4
A1ZBB4  Q9VRA8

此外,生成的阴性数据集必须包含与阳性数据集完全相同数量的蛋白质对。 为了解决这个问题,我尝试了以下方法:

# Read original file
data = list(infile.readlines())
ltotal = len(data)
lwritten = 0

# Split original file in words
with open (infilename, 'rt') as infile:
    pairs = set(frozenset(line.split()) for line in infile)
words = list(itertools.chain.from_iterable(pairs))
random.shuffle(words)

# Obtain pairs of words
with open(outfilename, 'wt') as outfile:
    for pair in itertools.izip(*[iter(words)] * 2):
        if frozenset(pair) not in pairs and lwritten != ltotal:
            outfile.write("%s\t%s\n" % pair)
            lwritten += 1

这行得通。而infile共有856471行,outfile得到不同范围的蛋白质对,最少713000。

如何解决这个问题,以便生成的对数与 infile 完全相同? 此外,我无法解决反向配对顺序问题。对这两个问题有什么想法吗?

提前致谢。

【问题讨论】:

  • 你能重复数值吗?每个文件中每种蛋白质的总数是否必须匹配?
  • 哦,对不起,错过了这一点。是的,我可以重复个别条目。但是我不能有重复的对。所有组合必须是唯一的。不,蛋白质的总数不必与每个文件匹配。虽然应该有一些平衡,或者当我使用 SVM 时会产生一些偏差。
  • 我的印象是您正在为 SVM 生成“背景”(某种零假设)分布。你为什么要否决这个人工数据集中已经出现的配对?
  • 在 SVM 中,您需要正数据集和负数据集来训练算法。如果你只使用一个正数据集,那么当你在测试数据中使用它时,算法将会被过度训练和偏颇。
  • 在没有否决的情况下构建负数据集有一个明确的统计解释——任何一对的乘积只是项目概率的乘积。我很想知道是什么建模假设导致您想要删除与您观察到的实例重叠的负面实例。

标签: python algorithm random


【解决方案1】:

要独立于顺序否决配对,我只需将两个顺序都放入我的配对列表中: 即我会添加:line.split() 和 line.split()[::-1] 到这组对中。

要生成更多对,而不是遍历单词列表,只需选择随机对(使用random.choice 可能吗?)然后根据无效对列表否决它们(您可能还需要考虑以下情况您生成“A1ZBB4 A1ZBB4”对并采取适当的行动)。只要你愿意,你就可以一直这样做。由于您需要确保输出仅包含唯一元素,因此输出项可以在生成时添加到否决列表(或作为单独的否决列表维护)。

如果你想减少你可以设置的内存占用:

  • pairs 是要否决的对集合,但每一对都是内部排序的,即如果您读取“Q9VRA8 A1ZBB4”,则将其存储为“A1ZBB4,Q9VRA8”对。
  • 您在上面生成随机对,检查该对的排序版本是否在您的否决列表中,如果是,请忽略它。

【讨论】:

  • 哦,我喜欢那个否决的想法。谢谢,这真的很有用!
猜你喜欢
  • 1970-01-01
  • 2019-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
相关资源
最近更新 更多