Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为神经网络表示DNA序列?_Python_Machine Learning_Deep Learning_Bioinformatics_Dna Sequence - Fatal编程技术网

Python 如何为神经网络表示DNA序列?

Python 如何为神经网络表示DNA序列?,python,machine-learning,deep-learning,bioinformatics,dna-sequence,Python,Machine Learning,Deep Learning,Bioinformatics,Dna Sequence,我想用Python构建一个神经网络来对DNA序列中的剪接连接进行分类。现在,我只有字符串形式的数据,例如GTAACTGC 我想知道最好的编码方式,我可以用神经网络处理。我的第一个想法是只给每个字母分配一个整数值,但这感觉很幼稚。另一个想法是为每个位置设置四个二进制指示符,分别对应于A、T、G或C。我也不确定这是否有效 解决这个问题的最佳方法是什么?以前,我只研究过数值,但从未研究过像DNA序列这样的字符串 编辑:现在,我将只看映射。对于阅读本文的任何人,请尝试查看;它确实给了我一些提示。为什么不

我想用Python构建一个神经网络来对DNA序列中的剪接连接进行分类。现在,我只有字符串形式的数据,例如GTAACTGC

我想知道最好的编码方式,我可以用神经网络处理。我的第一个想法是只给每个字母分配一个整数值,但这感觉很幼稚。另一个想法是为每个位置设置四个二进制指示符,分别对应于A、T、G或C。我也不确定这是否有效

解决这个问题的最佳方法是什么?以前,我只研究过数值,但从未研究过像DNA序列这样的字符串

编辑:现在,我将只看映射。对于阅读本文的任何人,请尝试查看;它确实给了我一些提示。

为什么不学习每个基的数字表示法呢

这是一个常见的问题,我们试图将有意义的单词编码为天真的数字。其核心思想是,不同的单词不应该用简单的数字来表示,而应该用学习过的密集向量来表示。找到这个向量表示的过程称为

在这种情况下,相互关系更密切的基可能在n维空间中具有彼此更接近的向量表示,其中n是向量的大小。这是一个简单的概念,很难在第一次看到它。您选择的嵌入超参数的大小应该很小,因为您只嵌入四个参数中的一个,请尝试2-5的大小

例如,一些大小为4的嵌入映射与本例无关:

G -> [1.0, 0.2, 0.1, 0.2]
A -> [0.2, 0.5, 0.7, 0.1]
T -> [0.1, 0.2, 1.0, 0.5]
C -> [0.4, 0.4, 0.5, 0.8]
生成和优化嵌入的确切技术本身就是一个主题;希望这个概念对你有用

另类


如果希望避免嵌入,因为词汇表限制为4,那么可以为每个基指定标量值。如果您这样做,您应该规范化-1和1之间的映射。

基于您提到的二进制指示符的一个想法是对1024x1024图像进行编码,例如位图图像,通常表示1048576位。对于图像中的每一行,可以成对查看位置或位,并按如下方式进行编码:

0 0 -> G
0 1 -> A
1 0 -> T
1 1 -> C
每行应产生512个数据值,或每幅图像产生524288个数据值


对于神经网络,我认为你可以结合卷积神经网络或CNN。另一个想法可能是在编码时避免图像的外边缘,以便在该过程中使用的任何内核都能完全覆盖活动的中心数据区域。也许这并不是最重要的改变,但与直接编码到图像边缘和角区域的数据映射相比,它可能是值得比较的。

欢迎使用堆栈溢出!在这个网站上,你应该尝试自己编写代码。之后,如果你有问题,你可以张贴你已经尝试了一个明确的解释什么是不工作,并提供一个解决方案。我建议读一个好问题。另外,一定要带上这个。这是一个非常有趣的概念。我认为现在,我会尝试一种更简单的方法,但将来我肯定会尝试嵌入!还有一个问题:相对于将标量值映射到每个基,您认为使用虚拟变量怎么样?对于DNA,哪种方法更干净/得到更好的结果?我不太清楚为什么你说的是虚拟变量,但你可以明确地将十进制值分配给每个基并进行静态转换。这有用吗?好的,那很有用!我曾尝试使用pandas方法获取虚拟对象,但我认为分配十进制值肯定更好。你有什么建议可以告诉我怎么做吗?嗯,不太好。学习有效地搜索和阅读你有疑问的主题的论文是非常重要的。既然你是新来的,我会毫不犹豫地告诉你,如果答案有帮助的话,你可以投票并用复选标记接受它。这为后来偶然发现它的人提供了更高的可视性,也为海报提供了互联网要点:好的,谢谢!我会调查的。我接受了你的职位: