Python считает количество появлений меток в Kmeans - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь сравнить список меток из Sklears Kmeans с прогнозируемыми метками для другого набора данных. Но список меток имеет разные размеры, поэтому я хочу, чтобы каждая метка встречалась.

Итак, я уже пробовал использовать Counter, но я не получаю именно то, что хочу. На данный момент я использую np.unique, и все еще есть некоторые проблемы.

Как пример:

X = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])

kmeans = KMeans(n_clusters=4, random_state=0).fit(X)

Unique,count = np.unique(kmeans.labels_,return_index=True)

print(count) # [2 2 1 1] so far so good

New_Labels = kmeans.predict([[0, 4], [4, 4],[0,5],[1,6],[7,2],[4,0],[4,2]])

print(New_Labels) # [3 0 3 3 0 2 0] also good

Unique1,count1 = np.unique(Labels,return_index=True)

Тогда вот где у меня проблема.

print(Unique1,count1) #[3 1 3]

Мне бы хотелось, чтобы в выводе моего количества меток также было указано 0, если метка кластера отсутствует. Поэтому я хотел бы, чтобы количество моих предсказанных ярлыков было

[3 0 1 3]

1 Ответ

0 голосов
/ 07 января 2019

Вы можете использовать следующее понимание списка, которое проходит через все возможные назначения кластера и .count вхождения каждого элемента:

[l.count(i) for i in range(max(l)+1)]
[3, 0, 1, 3]
...