Объект ‘KMeansModel’ не имеет атрибута ‘computeCost’ в apache pyspark

#python #apache-spark #pyspark #cluster-analysis #k-means

#питон #apache-искра #пайспарк #кластерный анализ #k-означает

Вопрос:

Я экспериментирую с моделью кластеризации в pyspark. Я пытаюсь получить среднеквадратичную стоимость кластера, подходящую для различных значений K

 def meanScore(k,df):
  inputCol = df.columns[:38]
  assembler = VectorAssembler(inputCols=inputCols,outputCol="features")
  kmeans = KMeans().setK(k)
  pipeModel2 = Pipeline(stages=[assembler,kmeans])
  kmeansModel = pipeModel2.fit(df).stages[-1]
  kmeansModel.computeCost(assembler.transform(df))/data.count()
 

Когда я пытаюсь вызвать эту функцию для вычисления затрат для различных значений K в фрейме данных

 for k in range(20,100,20):
  sc = meanScore(k,numericOnly)
  print((k,sc))
 

Я получаю ошибку атрибута как
AttributeError: объект ‘KMeansModel’ не имеет атрибута ‘computeCost’

Я довольно новичок в pyspark и только учусь, я искренне признателен за любую помощь в этом. Спасибо

Комментарии:

1. это означает, что этот метод computeCost не существует. проверьте документы на предмет правильного использования. spark.apache.org/docs/latest/api/python/pyspark.ml.html

Ответ №1:

Он устарел в документах Spark 3.0.0, предлагающих использовать оценщик.

 Note Deprecated in 3.0.0. It will be removed in future versions. 
Use ClusteringEvaluator instead. You can also get the cost on the training dataset in the summary.
 

Ответ №2:

Как упоминал Эркан Сирин, computeCost устарел в последней версии, это может помочь вам решить вашу проблему

 # Make predictions 
predictions = model.transform(dataset)
from pyspark.ml.evaluation import ClusteringEvaluator
# Evaluate clustering by computing Silhouette score
evaluator = ClusteringEvaluator()
silhouette = evaluator.evaluate(predictions)
print("Silhouette with squared euclidean distance = "   str(silhouette))
 

Я надеюсь, что это поможет, вы можете проверить официальные документы для получения дополнительной информации

Ответ №3:

Что касается текущей версии 3.1.2.

Используя KMeans в качестве примера, после импорта

 from pyspark.ml.clustering import KMeans
from pyspark.ml.evaluation import ClusteringEvaluator
 

Загрузка данных и обучение, затем просто вызывается ‘ClusteringEvaluator ()’:

 # Make predictions
predictions = model.transform(dataset)

# Evaluate clustering by computing Silhouette score
evaluator = ClusteringEvaluator()

silhouette = evaluator.evaluate(predictions)
print("Silhouette with squared euclidean distance = "   str(silhouette))
 

Ответ №4:

Оцените кластеризацию, вычисляя оценку силуэта:

в Spark 3.0.1 и выше

 print('Silhouette with squared euclidean distance:')
pdt = model.transform(final_data)
from pyspark.ml.evaluation import ClusteringEvaluator
evaluator = ClusteringEvaluator()
silhouette = evaluator.evaluate(pdt)
print(silhouette)
 

Оцените кластеризацию с помощью заданной суммы ошибок squre (wssse):

spark 2.2 — 3.0.0

 cost = model.computeCost(dataset)
print("Within Set Sum of Squared Errors = "   str(cost))