2016-02-20 44 views
1
import scipy.spatial.distance as dist 

Y=[[1,2,3],[2,3,4]] 

Q=dist.pdist(Y,'jaccard') 

print Q 

以下代碼段使用pdist的Jaccard距離計算給出的Jaccard距離1而它應該是0.5。 另一方面,如果Y=[[1,2,3],[4,2,3]],即如果訂購改變輸出是0.33。但是,jaccard距離與元素的順序無關。你能建議如何解決這個問題嗎?在SciPy的

+0

[docs](http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.spatial.distance.pdist.html)不是很清楚,但它們表明排序很重要:他們說Jaccard距離是「那些不同意的元素u [i]和v [i]的比例」,我知道這對於兩個元素都是固定的。這將同意你的結果。無論如何,你是否在他們的源代碼中檢查實現? – phfaist

+3

'jaccard'函數的文檔字符串(http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.jaccard.html)給出了更好的描述。 'jaccard'計算*布爾*數組的Jaccard-Needham不相似度。它的其他數組類型的行爲沒有定義,所以你不應該傳遞任意整數的數組。 –

+0

不妨將該評論轉換爲答案... –

回答

1

jaccard function的文檔字符串比pdist docstring中的簡要摘要給出了計算的更好的描述。 jaccard計算布爾數組的Jaccard-Needham不相似度。它的其他數組類型的行爲沒有定義,所以你不應該傳遞任意整數的數組。