2017-09-11 9 views
0

다음과 같이 두 개의 목록이 있습니다.파이썬에서 scipy를 사용하여 jaccard 거리를 계산하십시오.

list1 =[[0.0, 0.75, 0.2], [0.0, 0.5, 0.7]] 
list2 =[[0.9, 0.0, 0.8], [0.0, 0.0, 0.8], [1.0, 0.0, 0.0]] 

는 I는리스트 1의 X리스트 2의 인 Jaccard 거리 행렬을 얻고 싶은 (즉, 매트릭스 (6)의 값을 포함하는 2 × 3)

For example; 
[0.0, 0.75, 0.2] in list1 with all the three lists in list2 
[0.0, 0.5, 0.7] in list1 with all the three lists in list2 

I 실제로 모두 pdistcdist 시도. 그러나 각각 다음과 같은 오류가 발생합니다. TypeError: pdist() got multiple values for argument 'metric'ValueError: XA must be a 2-dimensional array..

이 문제를 해결하는 데 도움을주십시오.

+0

입력으로 포장하는'np.atleast_2d'을 시도해 보셨습니까? – Divakar

답변

1

m x n 2D 배열을 pdist에 전달해야합니다. 그것을 구성하기 위해 간단한 중첩 루프를 사용할 수 있습니다. 당신은 아마 이런 식으로 뭔가를 할 수 :

import scipy.spatial.distance as dist 

list1 =[[0.0, 0.75, 0.2], [0.0, 0.5, 0.7]] 
list2 =[[0.9, 0.0, 0.8], [0.0, 0.0, 0.8], [1.0, 0.0, 0.0]] 
distance = [] 
for elem1 in list1: 
    for elem2 in list2: 
     distance.append(dist.pdist([elem1,elem2], 'jaccard')) 

당신은 distance 배열에 결과를 얻을 수 있습니다.

+0

고마워요! 그것은 일했다 :) –

관련 문제