Advertisement
nq1s788

27 кластеры k-means

Feb 5th, 2025
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.95 KB | None | 0 0
  1. #https://inf-ege.sdamgia.ru/problem?id=70554 файл B
  2. from math import dist
  3. data = open("demo_2025_27_Б.txt").readlines()[1:]
  4. n = len(data)
  5. for i in range(n):
  6.     data[i] = list(map(float, data[i].replace(',', '.').split()))
  7. cen = [(1.0, 1.0), (7.0, 5.0), (3.0, 9.0)]
  8. for i in range(10):
  9.     cl = [[], [], []]
  10.     for e in data:
  11.         rst = [dist(e, cen[0]), dist(e, cen[1]), dist(e, cen[2])]
  12.         cl[rst.index(min(rst))].append(e) #находим индекс минимума в рст и туда кладем точку
  13.     for i in range(3):
  14.         c = (-1, -1)
  15.         mn_rst = 1000000000
  16.         for cur_c in cl[i]:
  17.             cur_rst = 0
  18.             for e in cl[i]:
  19.                 cur_rst += dist(cur_c, e)
  20.             if cur_rst < mn_rst:
  21.                 mn_rst = cur_rst
  22.                 c = cur_c
  23.         cen[i] = c
  24. print(int(((cen[0][0] + cen[1][0] + cen[2][0]) / 3) * 10000), int(((cen[0][1] + cen[1][1] + cen[2][1]) / 3) * 10000))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement