При попытке создать кластер ошибка пустой центроид не определена - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь кластеризовать 2 распределения с помощью K-средних и использовать косинусное сходство в качестве метрики для определения сходства.Я написал следующий код.Но выдает ошибку:

        Error: no centroid defined for empty cluster.
        Try setting argument 'avoid_empty_clusters' to True

Я не мог понять причину этого.Мне нужно создать 2 кластера.

    import numpy as np
    from nltk.cluster.kmeans import KMeansClusterer
    import nltk as nltk

    np.random.seed(1)

    distr_1 = np.sin(2 * np.random.randn(100) + np.random.randn())
    distr_2 = (3 * np.random.randn(100)) + np.random.randn()

    x = list(range(0,100))

    X_train = np.concatenate((distr_1, distr_2))
    X_train = X_train.reshape(200,1)

    kclusterer = KMeansClusterer(2, distance=nltk.cluster.util.cosine_distance, repeats=100)
    assigned_clusters = kclusterer.cluster(X_train.flatten(), assign_clusters=True)

    print(assigned_clusters)

1 Ответ

0 голосов
/ 18 октября 2018

Из-за плохих условий запуска может случиться так, что кластер станет пустым.

Ваш код должен обработать этот исключительный случай.

...