Я не могу понять различия между кодами :( [закрыто]Python

Программы на Python
Ответить
Anonymous
 Я не могу понять различия между кодами :( [закрыто]

Сообщение Anonymous »

У меня экзамен, и он включает в себя задание, требующее написания алгоритма DBscan для поиска кластеров и их центроидов по данным в файле (файл с двумя столбцами X и Y). Я не могу понять, почему эти два кода работают по-разному.
Первый код

Код: Выделить всё

s = open('name_of_file.txt')
s.readline()
data = []
for p in s:
p = p.replace(',', '.')
r = [float(i) for i in p.split()]
data.append(r)

print(len(data))
def dist(p1, p2):
x1, y1, x2, y2 = *p1, *p2
return ((x2 - x1)**2 + (y2 - y1)**2)**0.5

def getCluster(p0):
cluster = [p for p in data if dist(p0, p) < 1]
if len(cluster) > 0:
for p in cluster: data.remove(p)
next_cluster = [getCluster(p) for p in cluster]
for c in next_cluster: cluster.extend(c)
return cluster

clusters = []
while len(data) > 0:
p0 = data.pop()
cluster = [p0] + getCluster(p0)
print(len(cluster), print(cluster[:15]))
clusters.append(cluster)

def center(kl):
m = []
for p in kl:
s = sum(dist(p, p0) for p0 in kl)
m.append([s, p])
return min(m)[1]

centers = [center(c) for c in clusters]
Второй код практически такой же, отличается только часть функции getCluster

Код: Выделить всё

def getCluster(p0):
cluster = [p for p in data if dist(p0, p) < 1]
if len(cluster) > 0:
for p in cluster: data.remove(p)
next_cluster = [getCluster(p) for p in cluster]
cluster.extend(next_cluster) #this is it
return cluster
Я пытаюсь поискать в Google эту проблему, но ничего не могу найти.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ween-codes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»