我正在研究一个目前包含多个DNA序列列表的脚本(每个列表都有不同数量的DNA序列),我需要根据汉明距离相似性对每个列表中的序列进行聚类。我目前的实现(此时非常粗略)提取列表中的第一个序列并计算每个后续序列的汉明距离。如果它在某个汉明距离内,则将其附加到新列表中,该列表稍后用于从原始列表中删除序列以及将相似序列存储在defaultdict中。请参阅下面我目前的代码实现:
{{1}}
显然,这不是最好或最有效的方法,即使使用此实现,我遇到的脚本中仍然存在一些错误。我仔细阅读了StackOverflow / StackExchange问题,看看其他人是否遇到了我的问题和我发现的类似问题,其他许多人都提到了使用算法,如K-Means算法,Markov聚类方法,层次聚类等。除了需要数字而不是字符串的K-means方法之外,我对这些方法中的任何一种都不太熟悉。
您建议我使用哪种聚类方法将相似的DNA序列聚类在一起,以及实施您首选方法的最佳方法?任何建议将不胜感激!
答案 0 :(得分:0)
入门的最佳选择是层次聚类。
它很容易理解,它允许任何距离,并且即使数据本身难以可视化,它也可以将聚类可视化为树。