0

我有大量捕获的数据(可能有数十万条记录),我需要能够对其进行分解,这样我既可以对其进行分类,也可以自己生成“典型”数据。让我进一步解释...

如果我有以下数据字符串:

132T339G1P112S
164T897F5A498S
144T989B9B223T
155T928X9Z554T
...

您可能会开始推断以下内容:

  • 可能所有字符串都是 14 个字符长
  • 第 4、8、10 和 14 个字符可能始终是字母,而其余字符是数字
  • 第一个字符可能始终是“1”
  • 第 4 个字符可能总是字母 'T'
  • 第 14 个字符可能仅限为“S”或“T”
  • 等等...

随着您获得越来越多的真实数据样本,其中一些“规则”可能会消失;如果您看到一个 15 个字符长的字符串,那么您就有证据表明第一条“规则”不正确。但是,给定足够大的字符串样本,长度正好是 14 个字符,您可以开始假设“所有字符串都是 14 个字符长”,并为您的置信度分配一个数字(围绕事实进行适当的假设您正在看到一组适当随机的所有可能捕获的数据)。

正如您可能知道的那样,人类可以通过肉眼进行很多此类分类,但我不知道允许计算机进行分类的库或算法。

给定一组捕获的数据(比上面的要复杂得多......),我可以在我的代码中应用哪些库来为我进行这种分类,从而以给定的置信度识别“规则”?

作为下一步,我需要能够采用这些规则,并使用它们来创建符合这些规则的我自己的数据。我认为这比分类要容易得多,但我以前从未执行过这样的任务,所以我真的不确定它有多复杂。

猜测一下,Python 或 Java(或者可能是 Perl 或 R)可能是最有可能拥有这类库的“通用”语言,而且也许一些生物信息库会做这类事情。我真的不在乎我必须使用哪种语言。我需要尽我所能解决问题。

任何指向信息的指针都会非常有用。正如您可能知道的那样,我正在努力清楚地描述这个问题,并且可能有一组合适的关键字我可以插入谷歌,这将指向我的解决方案。

4

2 回答 2

0

尝试具有聚类算法的Weka 。聚类算法在没有监督的情况下发现数据中的模式。Weka 也有增量集群。正是你想要的,我想。

它是Java。

于 2010-05-23T19:34:19.707 回答
0

对于初学者来说,你不能真的指望让计算机识别任意复杂的规则。人类分析字符串也是如此。我相信您可以想到一些可以应用的规则示例,但不能指望人类仅通过查看字符串就能弄清楚。

我认为您需要做的是使用计算机可以识别的某些规则对计算机进行编程。例如,您可以编写一个脚本来识别“字符串长度始终为 X”形式的规则。甚至“第 N 个字符总是 X”也不会太难。我注意到您提到的示例规则都是这种形式,因此与人类分析相差不远;-) 事实上,如果您知道或可以假设出现的字符的选择给定位置仅基于位置索引,您可以使用数据来估计给定字符出现在给定位置的概率,这就像“第 N 个字符始终是 X”的更通用版本。

如果你想为你的规则建立一个置信水平,我建议你研究贝叶斯统计,当你想在收集新证据时修改假设的概率(例如“这条规则是正确的”)时使用它。

于 2010-05-19T07:34:35.097 回答