Spark / PySpark - GMM Clustering, обеспечивающий идеальную равновероятность и только 1 кластер - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь применить алгоритм кластеризации GMM (как в https://spark.apache.org/docs/latest/ml-clustering.html) для данного DataFrame следующим образом:

vector.show(1)

ID | Возможности

33.0 | [0.0,1.0,27043.0, ....]

type(vector)

pyspark.sql.dataframe.DataFrame

type(vector.select('features'))

pyspark.sql.dataframe.DataFrame

vector.printSchema()

root

| - id: double (nullable = true)

| - features: vector (nullable = true)

Затем я попробовал следующий код для созданиякластеры:

from pyspark.ml.clustering import GaussianMixture
gmm = GaussianMixture().setK(5).setSeed(538009335).setFeaturesCol("features")
gmm_model = gmm.fit(vector)
gmm_model.gaussiansDF.show()
gmm_predictions = gmm_model.transform(vector)
gmm_predictions.show()

Это работает без каких-либо ошибок или проблем, но алгоритм, наконец, возвращает одинаковое среднее значение и ковариацию для всех кластеров и присваивает каждой строке / идентификатору один и тот же кластер 0 (вероятности всегда равны 0,2 для любого кластера([0.2,0.2,0,2,0.2,0.2])).

Не могли бы вы знать, почему он возвращает мне такие результаты, пожалуйста?

Примечание: данные не несут ответственности за это.«плохая» кластеризация: попробовав Kmeans с Scikit-learn и PySpark, я получаю «реалистичную» кластеризацию с Scikit-learn.

СпасибоЗаранее за вашу помощь.

С уважением

...