Я пытаюсь применить алгоритм кластеризации 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.
СпасибоЗаранее за вашу помощь.
С уважением