PySpark: AttributeError: объект 'PipelineModel' не имеет атрибута clusterCenters - PullRequest
1 голос
/ 26 февраля 2020

Я создал алгоритм kmeans с Pypsark. Теперь я хочу также извлечь кластерные центры. Как мне включить это в конвейер? Это код, который у меня есть до сих пор, но он выдает ошибку «AttributeError: объект PipelineModel» не имеет атрибута clusterCenters. Как это можно исправить?

#### model K-Means ###

from pyspark.ml.clustering import KMeans, KMeansModel

kmeans = KMeans() \
          .setK(3) \
          .setFeaturesCol("scaledFeatures")\
          .setPredictionCol("cluster")

# Chain indexer and tree in a Pipeline
pipeline = Pipeline(stages=[kmeans])

model = pipeline.fit(matrix_normalized)

cluster = model.transform(matrix_normalized)

#get cluster centers
centers = model.clusterCenters()

1 Ответ

2 голосов
/ 03 марта 2020

фиктивные данные

from pyspark.ml.linalg import Vectors
from pyspark.ml.clustering import KMeans, KMeansModel
from pyspark.ml.pipeline import Pipeline


data = [(Vectors.dense([0.0, 0.0]),), (Vectors.dense([1.0, 1.0]),),
        (Vectors.dense([9.0, 8.0]),), (Vectors.dense([8.0, 9.0]),)]
matrix_normalized = spark.createDataFrame(data, ["scaledFeatures"])

ваш код

kmeans = KMeans() \
          .setK(3) \
          .setFeaturesCol("scaledFeatures")\
          .setPredictionCol("cluster")

# Chain indexer and tree in a Pipeline
pipeline = Pipeline(stages=[kmeans])

model = pipeline.fit(matrix_normalized)

cluster = model.transform(matrix_normalized)

просто измените последнюю строку

model.stages[0].clusterCenters()

[array([0.5, 0.5]), array([8., 9.]), array([9., 8.])]
...