К-значит не строит правильно - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть данные для кластеризации k-средних:

enter image description here

from sklearn.cluster import KMeans
num_clusters = 5
km = KMeans(n_clusters = num_clusters, init="random", max_iter=100, n_init=1)
x=km.fit(X)
print(km.labels_)
Output:
 [3 0 1 ... 2 0 0]

Затем я сделал заговор:

import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns; sns.set() 
plt.scatter(X[:,0],X[:,1], c=km.labels_, cmap='rainbow')

Но получил такой результат:

enter image description here

В чем может быть причина, почему я получил этот результат?

1 Ответ

0 голосов
/ 08 апреля 2020

Вы строите два первых измерения X (раса и пол), где цвета - это кластеры, найденные K-средних. Поэтому нет ничего удивительного в том, почему вы получаете эти результаты.

Я полагаю, что вы ищете способ визуально проверить, что кластеризация, выполненная с помощью K-means, имеет смысл . Для этого вам придется визуализировать все функции, используемые K-means для создания кластеров: но это 41, и наши глаза не могут видеть больше 4.

Интересное решение здесь - измерение сокращение : большая часть информации в 41 функции может быть синтезирована в меньшее (например, 2). Например, используя анализ основных компонентов (PCA), вы можете сжимать X в две функции. Попробуйте следующее:

from sklearn.decomposition import PCA
X_pca = PCA.fit_transform(X, n_dim=2)
plt.scatter(X_pca[:,0], X_pca[:,1], c=km.labels_, cmap='rainbow')
...