scikit-learn의 DictVectorizer
에서 반환 된 Scipy 스파 스 행렬에서 가장 가까운 이웃 클러스터링을 계산하려고합니다. 그러나 scikit-learn을 사용하여 거리 행렬을 계산하려고하면 'euclidean'거리를 사용하여 pairwise.euclidean_distances
과 pairwise.pairwise_distances
사이의 오류 메시지가 표시됩니다. 나는 scikit-learn이 거리 매트릭스를 계산할 수 있다는 인상을 받았다.Scipy Sparse - 거리 행렬 (Scikit 또는 Scipy)
내 매트릭스는 모양이 매우 희박합니다 : <364402x223209 sparse matrix of type <class 'numpy.float64'> with 728804 stored elements in Compressed Sparse Row format>
.
나는 Scipy에서 pdist
및 kdtree
과 같은 방법을 시도했지만 결과를 처리 할 수 없다는 다른 오류가 발생했습니다.
누구든지 저에게 거리 매트릭스 및/또는 가장 가까운 이웃 결과를 효과적으로 계산할 수있는 솔루션을 가르쳐 주시겠습니까?
일부 예제 코드 :
import numpy as np
from sklearn.feature_extraction import DictVectorizer
from sklearn.neighbors import NearestNeighbors
from sklearn.metrics import pairwise
import scipy.spatial
file = 'FileLocation'
data = []
FILE = open(file,'r')
for line in FILE:
templine = line.strip().split(',')
data.append({'user':str(int(templine[0])),str(int(templine[1])):int(templine[2])})
FILE.close()
vec = DictVectorizer()
X = vec.fit_transform(data)
result = scipy.spatial.KDTree(X)
오류 : 나는 실행하는 경우
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/scipy/spatial/kdtree.py", line 227, in __init__
self.n, self.m = np.shape(self.data)
ValueError: need more than 0 values to unpack
마찬가지로 :
scipy.spatial.distance.pdist(X,'euclidean')
를 내가 얻을 다음
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/scipy/spatial/distance.py", line 1169, in pdist
[X] = _copy_arrays_if_base_present([_convert_to_double(X)])
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/scipy/spatial/distance.py", line 113, in _convert_to_double
X = X.astype(np.double)
ValueError: setting an array element with a sequence.
,
마지막에 NearestNeighbor
을 실행하여 메모리 오류의 결과를 scikit 배우기 :
nbrs = NearestNeighbors(n_neighbors=10, algorithm='brute')
어떤 종류의 오류가 발생합니까? 어떤 코드를 실행하고 있습니까? – jorgeca
질문에 해당 정보를 편집하십시오 : 당신이하고있는 것을 보여주는 최소한의 예와 얻은 실제 오류. – jorgeca
감사! 이제 훨씬 더 좋아 보인다. – jorgeca