如何修改此代碼以初始化所採取的數據點域內的質心?如果DATA = [[2.0,5.0],[1.0,5.0],[22.0,55.0],[42.0,12.0],[15.0,16.0]] 然後質心(x,y)可以是x屬於的任何值:[1,42]和y屬於:[5,55]。 質心不一定是數據點。如何初始化屬於數據點域的「k-均值聚類」中的質心?
注意:數據的數據表是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
示例代碼有什麼問題?質心是不是獨一無二的? –
@ James K - 初始化的質心不應該只是數據點中的一個,而質心(x,y)應該是任何值,使得x屬於:[1,42],y屬於:[5,55]爲它會影響k均值聚類的性能。 – Utkarsh