Wie kann ich diesen Code ändern, um die Zentroide innerhalb der Domäne der Datenpunkte zu initialisieren?Wie initialisiert man Zentroide in "k-means clustering", die zur Domäne der Datenpunkte gehören?
Zum Beispiel: wenn DATA = [[2.0, 5.0], [1.0, 5.0], [22.0, 55.0], [42.0, 12.0], [15.0, 16.0]] Dann könnten Schwerpunkte (x, y) Sei ein beliebiger Wert, so dass x zu: [1,42] und y zu [5,55] gehört. Die Zentroide sollten nicht unbedingt Datenpunkte sein.
Hinweis: Der Dataipe für Daten ist float.
import random
import math
BIG_NUMBER = math.pow(10, 10)
data = []
centroids = []
class Centroid:
def __init__(self, x, y):
self.x = x
self.y = y
def set_x(self, x):
self.x = x
def get_x(self):
return self.x
def set_y(self, y):
self.y = y
def get_y(self):
return self.y
def initialize_centroids(k,DATA):
for j in range(k):
x = random.choice(DATA)
centroids.append(Centroid(x[0], x[1]))
return
Was ist das Problem mit dem Beispielcode? Sind die Zentroide sicherlich nicht einzigartig? –
@ James K - Initialisierte Zentroide sollten nicht genau einer der Datenpunkte sein, vielmehr sollten die Zentroide (x, y) einen beliebigen Wert haben, so dass x zu: [1,42] und y zu [5,55] as gehört es beeinflusst die Leistung von k bedeutet Clustering. – Utkarsh