dicts (sklearn)에서 유클리드 거리를 계산 : 사실 그들은 위키 텍스트에서 단어가 포함 된나는 두 <code>dictionaries</code> 이미 다음과 같이 내 코드에서 계산이
X = {'a': 10, 'b': 3, 'c': 5, ...}
Y = {'a': 8, 'c': 3, 'e': 8, ...}
, 그러나 이것은 무슨 뜻인지 보여주기 위해 봉사해야한다 . 반드시 같은 키를 포함하지는 않습니다.
가 처음에 나는이 같은 sklearn
의 페어 메트릭 사용하고 싶었 다음 shape
에 액세스하려고
--------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-124-7ff03bd40683> in <module>()
6 biden = wiki[wiki['name'] == 'Joe Biden']['tf_idf'][0]
7
----> 8 obama_biden_distance = pairwise_distances(obama, biden, metric='euclidean', n_jobs=2)[0][0]
/home/xiaolong/development/anaconda3/envs/coursera_ml_clustering_and_retrieval/lib/python3.4/site-packages/sklearn/metrics/pairwise.py in pairwise_distances(X, Y, metric, n_jobs, **kwds)
1205 func = partial(distance.cdist, metric=metric, **kwds)
1206
-> 1207 return _parallel_pairwise(X, Y, func, n_jobs, **kwds)
1208
1209
/home/xiaolong/development/anaconda3/envs/coursera_ml_clustering_and_retrieval/lib/python3.4/site-packages/sklearn/metrics/pairwise.py in _parallel_pairwise(X, Y, func, n_jobs, **kwds)
1058 ret = Parallel(n_jobs=n_jobs, verbose=0)(
1059 fd(X, Y[s], **kwds)
-> 1060 for s in gen_even_slices(Y.shape[0], n_jobs))
1061
1062 return np.hstack(ret)
AttributeError: 'dict' object has no attribute 'shape'
이 뭔가처럼 읽어 나에게 그러나
from sklearn.metrics.pairwise import pairwise_distances
obama = wiki[wiki['name'] == 'Barack Obama']['tf_idf'][0]
biden = wiki[wiki['name'] == 'Joe Biden']['tf_idf'][0]
obama_biden_distance = pairwise_distances(obama, biden, metric='euclidean', n_jobs=2)[0][0]
을,이 오류를 제공합니다 속성은 dict
에는 없습니다. 나는 그것이 numpy
배열을 필요로한다고 생각한다. 사전에 어떤 특정 키가없는 경우 0
값으로 가정하면 sklearn
함수가 정확한 거리를 계산할 수 있도록 사전을 변환 할 수 있습니까?
. 또한 각 배열에는 존재하지 않는 키에 0이 있어야합니다. 그렇지 않으면 유클리드 거리가 잘못되었습니다. – Zelphir
@Zelphir 웁스! 네가 옳아. 음, 코사인 거리를 사용 하시겠습니까? ㅎ. 그러나 실제로는 기본값을 사용하여'get' 메소드를 사용하여 작동하도록 수정할 수 있습니다. –
@Zelphir 교차 대신에 합집합과 함께. 나는 이전에 많은 문서들로 구성된 큰 어휘와 코퍼라틴을 사용해 동일한 접근법을 사용 했었습니다. –