Задача создания N-арного дерева классов Python - PullRequest
0 голосов
/ 13 сентября 2018

Я работаю над кластеризацией текстового корпуса, и я хочу сделать следующее: - Разделить корпус на произвольное количество кластеров. - Затем для каждого кластера снова разделить его на несколько кластеров, пока не будет нарушен какой-либо внутренний критерий.

Теперь я реализовал способ кластеризации набора документов, но мне было интересно, была ли какая-то предварительно реализованная оптимизированная структура данных для размещения всей иерархии в Python, например матрица связи в scipy.cluster.hierarchy длявосходящая иерархическая кластеризация?

Спасибо!

РЕДАКТИРОВАТЬ: я начал реализовывать класс, разработанный для моей проблемы, но у меня есть проблема:

class ClustNode():
    def __init__(self, indices, sons=[]):
        self.sons = sons
        self.indices = indices

    def divide(self, X):
        km = KMeans(n_clusters=2, max_iter=100, n_init=1)
        km.fit(X[self.indices, :])

        for k in range(km.n_clusters):
            subclust_ind = self.indices[km.labels_ == k]
            self.sons.append(ClustNode(subclust_ind))

У меня проблема вшаг деления: когда я добавляю нового сына на основе деления Kmeans (сейчас я выбираю количество кластеров вручную) в функции divide, новый созданный сын будет иметь свой атрибут self.sons!Например, следующий код:

X = np.random.random(size=(100, 5))
n = len(X)    
z = ClustNode(np.arange(n))
z.divide(X)

, тогда z.sons будет содержать 2 ClustNode объектов, но также z.sons[0].sons и z.sons[0].sons[0].sons и так далее ...

Iне понимаю почему, вы, ребята, можете мне помочь?

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