Почему веса не меняют K-среднее положение центра кластера в учебном пакете sci-kit? - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь вычислить центральное положение кластера с опцией весов.Но кажется, что веса не работают.

Вот простой скрипт, который представляет проблему

X = []
weights = []
for x in range(-10,10):
    for y in range(-10,10):
        X+= [[x,y]]
        if x>0 and y>0:
            weights += [10000]
        else:
            weights += [1]

X = np.array(X)
weights = np.array(weights)

kmeans = KMeans(n_clusters=1, random_state=0).fit(X,weights)
print kmeans.cluster_centers_

Он печатает [[-0.5 -0.5]] с весами 10000 в 1-м квартале.

Я ожидаю, что это будет приблизительно (5,5)

EDIT1: Попытка вызвать fit () как:

fit(X,sample_weight=weights)

Возвращает:

TypeError: fit() got an unexpected keyword argument 'sample_weight'

Добавление второй переменной тоже не помогает:

fit(X,None,weights)

Возвращает:

TypeError: fit() takes at most 3 arguments (4 given)

1 Ответ

0 голосов
/ 30 декабря 2018

Проблема в том, как вы вызываете метод fit.Вам необходимо передать weights в качестве аргумента ключевого слова

kmeans = KMeans(n_clusters=1, random_state=0).fit(X, sample_weight=weights)

Объяснение :

Подпись метода fit выглядит следующим образом:

KMeans.fit(self, X, y=None, sample_weight=None)

Вызвав KMeans.fit(self, X, weights), затем неявно y = weights.А поскольку y игнорируется, эффект не действует.

См. официальные документы для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...