Ошибка индекса в функции get при формировании кластеров - PullRequest
0 голосов
/ 06 июня 2018

Я новичок в Python и использую Jupyter Notebook

Я пытаюсь добиться пространственной кластеризации, используя метод DBSCAN.Мне удалось сформировать кластеры, но при попытке найти в каждом кластере, который находится ближе всего к центроиду, я попытался запустить следующий код

def get_centermost_point(cluster):
centroid = (MultiPoint(cluster).centroid.x, MultiPoint(cluster).centroid.y)
centermost_point = min(cluster, key=lambda point: great_circle(point, centroid).m)
return tuple(centermost_point)
centermost_points = clusters.map(get_centermost_point)

После выполнения кода я получил следующую ошибку:

IndexError                                Traceback (most recent call last)
<ipython-input-43-54be540e9384> in <module>()

 4     centermost_point = min(cluster, key=lambda point: great_circle(point, centroid).m)
  5     return tuple(centermost_point)
----> 6 centermost_points = clusters.map(get_centermost_point)

~\Anaconda3\lib\site-packages\pandas\core\series.py in map(self, arg, na_action)
   2994         """
   2995         new_values = super(Series, self)._map_values(
-> 2996             arg, na_action=na_action)
   2997         return self._constructor(new_values,
   2998                                  index=self.index).__finalize__(self)

~\Anaconda3\lib\site-packages\pandas\core\base.py in _map_values(self, mapper, na_action)
   1002 
   1003         # mapper is a function
-> 1004         new_values = map_f(values, mapper)
   1005 
   1006         return new_values

pandas/_libs/src\inference.pyx in pandas._libs.lib.map_infer()

<ipython-input-43-54be540e9384> in get_centermost_point(cluster)
      1 # given a cluster of points, return the point nearest to the cluster's centroid
      2 def get_centermost_point(cluster):
----> 3     centroid = (MultiPoint(cluster).centroid.x, MultiPoint(cluster).centroid.y)
      4     centermost_point = min(cluster, key=lambda point: great_circle(point, centroid).m)
      5     return tuple(centermost_point)

~\Anaconda3\lib\site-packages\shapely\geometry\point.py in x(self)
     54     def x(self):
     55         """Return x coordinate."""
---> 56         return self.coords[0][0]
     57 
     58     @property

IndexError: list index out of range

Может кто-нибудь предложить способ исправить это?

Заранее спасибо:)

...