python - PySpark如何找到适当数量的集群
问题描述
当我使用 Python 和 sklearn 时,我绘制了肘法以找到适当数量的 KMean 集群。当我在 PySpark 中工作时,我也想做同样的事情。我知道由于 Spark 的分布式特性,PySpark 的功能有限,但是,有没有办法获得这个数字?
我正在使用以下代码绘制肘部 使用 Elbow 方法从 sklearn.cluster import KMeans 中找到最佳集群数
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, init='k-means++', max_iter=300, n_init=10, random_state=0)
kmeans.fit(X)
wcss.append(kmeans.inertia_)
plt.plot(range(1, 11), wcss)
plt.title('The Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.show()
解决方案
我用另一种方式做到了。使用 Spark ML 计算特征的成本并将结果存储在 Python 列表中,然后绘制它。
# Calculate cost and plot
cost = np.zeros(10)
for k in range(2,10):
kmeans = KMeans().setK(k).setSeed(1).setFeaturesCol('features')
model = kmeans.fit(df)
cost[k] = model.summary.trainingCost
# Plot the cost
df_cost = pd.DataFrame(cost[2:])
df_cost.columns = ["cost"]
new_col = [2,3,4,5,6,7,8, 9]
df_cost.insert(0, 'cluster', new_col)
import pylab as pl
pl.plot(df_cost.cluster, df_cost.cost)
pl.xlabel('Number of Clusters')
pl.ylabel('Score')
pl.title('Elbow Curve')
pl.show()
推荐阅读
- reactjs - 尝试使用样式组件时出现 Webpack 错误
- php - 仅当购物车中的每个产品都属于同一类别时才分配 var
- javafx - 如何刷新 JavaFX 中的选择框?
- javascript - 与 Map 一起使用后,Array 过滤器函数的行为发生了变化
- java - 移动应用程序仿真能够连接到在线应用程序服务,但不能在实际设备上运行
- angular - Angular获取选定的让值
- python - 在本地同步 aws s3 存储桶(连同文件夹结构)并仅在新添加的本地文件夹上运行 python 代码
- bootstrap-4 - 外部输入时隐藏的简单表单和引导错误?
- angular - 如何在ionic 3中将长文本裁剪为...
- python-3.x - 错误:打开 Google App Engine Python 域时出现错误的网关 502