Я новичок в 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
Может кто-нибудь предложить способ исправить это?
Заранее спасибо:)