Skip to main content
 首页 » 编程设计

python之Jaccard 的距离矩阵与 tensorflow

2025年05月04日20wayfarer

我想使用 Jaccard 计算距离矩阵距离。并尽快这样做。我曾经使用 scikit-learn's pairwise_distances功能。但是 scikit-learn 并不打算支持 GPU,甚至还有一个 known bug这会使函数在并行运行时变慢。

我唯一的限制是生成的距离矩阵可以被馈送到 scikit-learn's DBSCAN聚类算法。我正在考虑使用 tensorflow 实现计算,但找不到一种简单好用的方法。


PS:我有理由预先计算距离矩阵,而不是让 DBSCAN 根据需要进行计算。

请您参考如下方法:

嘿,我遇到了同样的问题。

考虑到 jaccard 相似度是真阳性 (tp) 与真阳性、假阴性 (fn) 和假阳性 (fp) 之和的比率,我想出了这个解决方案:

    def jaccard_distance(self): 
        tp = tf.reduce_sum(tf.mul(self.target, self.prediction), 1) 
        fn = tf.reduce_sum(tf.mul(self.target, 1-self.prediction), 1) 
        fp = tf.reduce_sum(tf.mul(1-self.target, self.prediction), 1) 
        return 1 - (tp / (tp + fn + fp)) 

希望这对您有所帮助!