nq1s788

dbscan

Mar 9th, 2026
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.04 KB | None | 0 0
  1. from math import dist
  2. import matplotlib.pyplot as plt
  3. from sklearn.cluster import DBSCAN
  4. data = open('q.txt').readlines()
  5. a = []
  6. for e in data:
  7.     a.append(list(map(float, e.replace(',', '.').split())))
  8. db = DBSCAN(eps=0.27, min_samples=3)
  9. labels = db.fit_predict(a)
  10. plt.figure(figsize=(10, 10))
  11. colors = ['red', 'blue', 'green', 'yellow', 'purple']
  12. clusters = [[], [], [], [], []]
  13. for i in range(len(a)):
  14.     if labels[i] == -1:
  15.         plt.scatter(a[i][0], a[i][1], color='black', s=20)
  16.     else:
  17.         clusters[labels[i]].append(a[i])
  18.         plt.scatter(a[i][0], a[i][1], color=colors[labels[i]], s=20)
  19. plt.show()
  20. cen = []
  21. for i in range(5):
  22.     c_best = -1
  23.     rst_best = 10000000000
  24.     for c in clusters[i]:
  25.         rst = 0
  26.         for e in clusters[i]:
  27.             rst += dist(e, c)
  28.         if rst < rst_best:
  29.             c_best = c
  30.             rst_best = rst
  31.     cen.append(c_best)
  32. print(int(((cen[0][0] + cen[1][0] + cen[2][0] + cen[3][0]) / 4) * 10000), int(((cen[0][1] + cen[1][1] + cen[2][1] + cen[3][1]) / 4) * 10000))
Advertisement
Add Comment
Please, Sign In to add comment