Я экспериментирую с различными алгоритмами кластеризации и метриками расстояния строк в Python с конечной целью кластеризации списка строк в соответствии с различными метриками расстояния, такими как Левенштейн, Яро и т. Д. (Каждая строка обычно содержит 1 или 2 слова) .
Я создал код для вычисления расстояний между строками в соответствии с различными метриками расстояний (используя пакет с медузами) и для их кластеризации с помощью различных алгоритмов, предоставляемых пакетом sklearn.cluster. Вот пример кода для расстояния Jaro и кластеризации MeanShift:
tokens = np.array(["test1", "test2", "test3", "cat", "cat food", "apple", "apple pie"])
distances = -1 * np.array([[jellyfish.jaro_distance(w1, w2) for w1 in tokens] for w2 in tokens])
meanshift = sklearn.cluster.MeanShift()
meanshift.fit(distances)
clusters = dict()
key = 0
for cluster_id in np.unique(meanshift.labels_):
cluster = np.unique(tokens[np.nonzero(meanshift.labels_ == cluster_id)])
clusters[key] = cluster.tolist()
key += 1
plot_clusters(clusters, ...)
Теперь я хотел бы построить / визуализировать / сохранить результаты кластеризации, предпочтительно в виде сетевого графика, подобного этому [1]. Я был бы счастлив с простой визуализацией, которая позволяет легко видеть (и считать) различные кластеры. Вот почему я строю просто словарь с элементами кластера. Однако было бы неплохо, если бы при визуализации учитывалось расстояние между точками данных, рассчитанное заранее. В любом случае для меня все будет хорошо. Я просто хочу, чтобы некоторые приятные визуализации сопровождали анализ реальных кластеров.
У кого-нибудь есть идеи или указания, как это решить? Любая помощь будет высоко ценится!
Спасибо!
[1] https://www.kdnuggets.com/wp-content/uploads/k-means-datasci.jpg
Отказ от ответственности: я новичок в python и в машинном обучении в целом