Python
from math import dist
cl1 = []; cl2 = []
for i in open('27'):
x, y = [float(x) for x in i.split()]
if y < 5: cl1.append([x,y])
if y > 5: cl2.append([x,y])
def center(cl):
mn = []
for p1 in cl:
s = sum(dist(p1,p2) for p2 in cl)
mn.append([s, p1])
return min(mn)[1]
print(center(cl1))
print(center(cl2)) Способ 2
# Кластеризация с N кластерами (k-means)
from math import dist
pts = []
for line in open('27'):
x, y = map(float, line.split())
pts.append((x, y))
# Сортируем и делим на 2 кластера
pts.sort(key=lambda p: p[1])
mid = len(pts) // 2
cl1, cl2 = pts[:mid], pts[mid:]
# Центр масс кластера
def centroid(cl):
cx = sum(p[0] for p in cl) / len(cl)
cy = sum(p[1] for p in cl) / len(cl)
return (cx, cy)
print(centroid(cl1))
print(centroid(cl2)) 📚 Теория
Кластерный анализ. Метод ближайшего соседа, центроиды.