我使用 Clustal Omega 得到了一个由 500 个蛋白质序列组成的距离矩阵(它们是同源的)。
我想用亲和传播算法来对这些序列进行聚类。
一开始,我手工观察到距离矩阵仅在 0 和 1 之间取值,其中 0 距离 = 100% 相同,因此我认为只需取 (1 - distance) 即可得到亲和度。
我运行了代码,聚类看起来合理,一切似乎都很顺利... 直到我读到通常通过应用“热核”将距离矩阵转换为亲和矩阵。那时我的内心充满了困惑。
我是否错误地理解了亲和矩阵的概念?是否有一种简单的方法来计算亲和矩阵?Scikit-learn 提供了以下公式:
但是 Beta 是什么?我知道 distance.std() 是距离的标准差。我现在对所涉及的概念感到相当困惑和迷失(与实际编码实现相反),所以非常感谢任何帮助!P.S. 我已经尝试在 Biostars.org 上发帖子,但没有得到答案...
我想用亲和传播算法来对这些序列进行聚类。
一开始,我手工观察到距离矩阵仅在 0 和 1 之间取值,其中 0 距离 = 100% 相同,因此我认为只需取 (1 - distance) 即可得到亲和度。
我运行了代码,聚类看起来合理,一切似乎都很顺利... 直到我读到通常通过应用“热核”将距离矩阵转换为亲和矩阵。那时我的内心充满了困惑。
我是否错误地理解了亲和矩阵的概念?是否有一种简单的方法来计算亲和矩阵?Scikit-learn 提供了以下公式:
similarity = np.exp(-beta * distance / distance.std())
但是 Beta 是什么?我知道 distance.std() 是距离的标准差。我现在对所涉及的概念感到相当困惑和迷失(与实际编码实现相反),所以非常感谢任何帮助!P.S. 我已经尝试在 Biostars.org 上发帖子,但没有得到答案...