Итак, у меня возникли проблемы с моим скриптом ниже, код запускается и компилируется, но есть некоторые проблемы.Я не уверен, является ли моя проблема проблемой расчета или проблемой ее форматирования.Я даже не уверен, нахожусь ли я на правильном пути, я чувствую, что я есть, но я новичок в Python, я все уши к любому совету или вкладу было бы здорово!Застрял на следующем:
1) Класс K_means вообще не назначает центроиды кластерам
2) Класс K_means не выполняет никаких пересчетов для повторного центрирования центроидов
Ниже приведен мой код, я просто вставил свои функции, поскольку думаю, что именно в этом проблема:
class K_means():
def __init__(self,k, lines, **kwargs):
self.k = k
self.lines = lines
self.index = []
self.distance = []
self.elements = []
self.points = []
for keys, values in kwargs.items():
setattr(self, keys, values)
def determineDistance(self, centroids, new_dict):
for keys, points in new_dict.items():
self.points.append(points)
for elements in range(len(centroids)):
self.elements.append(elements)
distance = abs(points - centroids[elements])
self.distance.append(distance)
def assign_to_clusters(self, lines, clusters, centroids,
point_assignments, distance, new_dict):
for index, points in new_dict.items():
closest_index = (self.k + 1)
for elements in range(len(centroids)):
distance = self.determineDistance(centroids, new_dict)
if distance < closest_index:
closest_index = distance
index = elements
clusters[index].append(points)
point_assignments[index] = closest_index
return point_assignments
def update_location(self, clusters, centroids):
for keys, values in clusters.items():
new_centroids ={keys:sum(values)/float(len(values))}
centroids.update(new_centroids)
return centroids