AttributeError: 'KMeans' 对象没有属性 'setK'

问题描述

来自 https://runawayhorse001.github.io/LearningApacheSpark/clustering.html 的示例 在我决定测试 Spark 的集群示例时导致了奇怪的错误。 示例:

from sklearn.cluster import KMeans

import numpy as np

cost = np.zeros(20)

for k in range(2,20):
    kmeans = KMeans()\
            .setK(k)\
            .setSeed(1) \
            .setFeaturesCol("indexedFeatures")\
            .setPredictionCol("cluster")
model = kmeans.fit(data)
cost[k] = model.computeCost(data)

尽管已经实现了拟合,但它导致了 Kmeans 属性错误

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-22-296a7d54514a> in <module>
      2 cost = np.zeros(20)
      3 for k in range(2,20):
----> 4     kmeans = KMeans()\
      5             .setK(k)\
      6             .setSeed(1) \

AttributeError: 'KMeans' object has no attribute 'setK'

我过去遇到过类似问题,.fit() 解决了这些问题,但现在不起作用。

解决方法

您导入了错误的 KMeans。我相信 KMeans 指的是 Spark ML 中的那个,而不是 scikit-learn 中的那个。

from pyspark.ml.clustering import KMeans