Итак, у меня около миллиона строк, и мне нужно их сгруппировать. Я начал с рисования случайной выборки и вычисления иерархических кластеров для получения дендрограммы. У меня есть идея, сколько там кластеров.Начальные семена для k-средств из иерархической кластеризации
Теперь я хотел бы использовать кластер K-Means для всего образца с начальными семенами предыдущего шага - иерархической кластеризацией. Но я не знаю, как получить эти исходные семена.
Ниже код для иерархической кластеризации:
from scipy.cluster.hierarchy import linkage
from sklearn import preprocessing as prep
seed = 85
df_s = df.sample(frac=0.01, replace=False)
df_s = df_s.reset_index(drop=True)
scaler = prep.MinMaxScaler()
df_std = scaler.fit_transform(df_s[clmns])
Z = linkage(df_std, 'ward')
Тогда для K-Means, я знаю, что я могу назвать его следующим образом:
from scipy.cluster.vq import kmeans2
centroid, label = kmeans2(df[clmns], 3)
Я знаю, что аргумент minit
, чтобы вставить NXP матрицу с семенами, но мне не ясно, как их получить.
Этот вопрос был первоначально размещен при перекрестной проверке. Но поскольку речь идет о программировании, мне было рекомендовано опубликовать его здесь.
Не могли бы вы рассказать о том, почему это плохая отправная точка для k-средств? Мы думаем сделать это для нашей кластеризации: выборка ==> иерархическая для поиска центроидов ==> kmeans – Romain
Просто сделайте выборку => k-значит на образце, а затем используйте центрифуги образца как отправную точку для полного запуска k-середины. Это будет как быстрее, так и лучше. Это примерно то же, что и Fayyad et al. если я правильно помню, и одна из лучших стратегий. –
Но если вам просто нужно ускорить k-середину, проверьте более быстрые реализации. Вот недавнее сравнение: Kriegel, H. P. et al. (2016). (Черное) искусство оценки времени выполнения: сравниваем ли алгоритмы или реализации ?. Информационно-информационные системы, 1-38. - По-видимому, есть огромные различия в производительности. –