2016-07-08 7 views
1

sklearn을 사용하여 응집 클러스터링을 시도하고 있습니다. 피팅 단계에서이 오류가 발생합니다. 오류가 항상 나타나지 않습니다. 데이터 포인트의 수를 변경하면 오류 및 응집 클러스터링이 발생하지 않을 수 있습니다. 나는 이것을 디버깅하는 방법을 너무 확신하지 못한다. 이미 fillnan을 사용하여 데이터 배열에 NaN 값이 없다는 것을 확인했습니다. 왜 이런 일이 일어날 지에 대한 아이디어가 도움이 될 것입니다.sci-kit agglomerative 클러스터링 오류를 학습하십시오.

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-38-8acbe956f76e> in <module>() 
    13  agg = AgglomerativeClustering(n_clusters=k,affinity="euclidean",linkage="ward") 
    14  init = time.time() 
---> 15  agg.fit(data) 
    16  atime = time.time() 
    17  labels = agg.labels_ 

C:\Python27\lib\site-packages\sklearn\cluster\hierarchical.pyc in fit(self, X, y) 
    754          n_components=self.n_components, 
    755          n_clusters=n_clusters, 
--> 756          **kwargs) 
    757   # Cut the tree 
    758   if compute_full_tree: 

C:\Python27\lib\site-packages\sklearn\externals\joblib\memory.pyc in __call__(self, *args, **kwargs) 
    279 
    280  def __call__(self, *args, **kwargs): 
--> 281   return self.func(*args, **kwargs) 
    282 
    283  def call_and_shelve(self, *args, **kwargs): 

C:\Python27\lib\site-packages\sklearn\cluster\hierarchical.pyc in ward_tree(X, connectivity, n_components, n_clusters, return_distance) 
    189       'for the specified number of clusters', 
    190       stacklevel=2) 
--> 191   out = hierarchy.ward(X) 
    192   children_ = out[:, :2].astype(np.intp) 
    193 

C:\Python27\lib\site-packages\scipy\cluster\hierarchy.pyc in ward(y) 
    463 
    464  """ 
--> 465  return linkage(y, method='ward', metric='euclidean') 
    466 
    467 

C:\Python27\lib\site-packages\scipy\cluster\hierarchy.pyc in linkage(y, method, metric) 
    662    Z = np.zeros((n - 1, 4)) 
    663    _hierarchy.linkage(dm, Z, n, 
--> 664        int(_cpy_euclid_methods[method])) 
    665  return Z 
    666 

scipy\cluster\_hierarchy.pyx in scipy.cluster._hierarchy.linkage (scipy\cluster\_hierarchy.c:8759)() 

C:\Python27\lib\site-packages\scipy\cluster\_hierarchy.pyd in View.MemoryView.memoryview_copy_contents (scipy\cluster\_hierarchy.c:22026)() 

C:\Python27\lib\site-packages\scipy\cluster\_hierarchy.pyd in View.MemoryView._err_extents (scipy\cluster\_hierarchy.c:21598)() 

ValueError: got differing extents in dimension 0 (got 704882705 and 4999850001) 
+1

Google에서 사용할 수있는 최소한의 예가 있습니까? – edwinksl

답변

1

이 범람 문제이다는 참고 4999850001-2 ** 32 = 704,882,705 (당신의 출력의 마지막 줄). 32 비트 정수에 적합하지 않은 이유가 있습니다. 적은 수의 데이터 포인트를 사용해보십시오.

+0

아마도 1e3 개 미만의 레코드가있을 때 제대로 작동하는 것 같습니다. 어떻게 해결할 수있는 아이디어? (나는 약 1e5 레코드 .. 가지고있다) – ROBOTPWNS

+0

10k 레코드가 많지 않다, 다른 뭔가 오버플로의 원인이어야합니다. 입력 벡터는 얼마나 오래 있습니까? 그 숫자의 범위는 무엇입니까? 사전 처리 단계를 적용 했습니까 (예 : 특정 방식으로 정규화). – dkar

+0

데이터 벡터는 24 x 10k입니다. 전처리에서 데이터를 정규화 했으므로 0과 1 사이의 모든 부동 소수점 숫자가 사용됩니다. – ROBOTPWNS