Kmeans肘子方法不返回肘子。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kmeans肘子方法不返回肘子。相关的知识,希望对你有一定的参考价值。
所以按照文档中的例子(此处):
KElbowVisualizer实现了 "肘部 "方法,帮助数据科学家通过对K的数值范围进行模型拟合,选择最佳的聚类数量。 如果线图像一只手臂,那么 "肘部"(曲线上的拐点)就很好地表明,基础模型在该点上的拟合效果最好。
如果图中没有肘部呢?当我在我的数据集上运行同样的代码时,输出的结果是。
所以每增加一个聚类,失真度就会不断增加
然而,当我使用kmeans.intertia属性,运行另一个肘子方法的例子时。
sse = {}
for k in range(1, 10):
kmeans = KMeans(n_clusters=k, max_iter=1000).fit(testDF)
testDF["clusters"] = kmeans.labels_
#print(data["clusters"])
sse[k] = kmeans.inertia_ # Inertia: Sum of distances of samples to their
closest cluster center
plt.figure()
plt.plot(list(sse.keys()), list(sse.values()))
plt.xlabel("Number of cluster")
plt.ylabel("SSE")
plt.show()
输出是:
其中确实有一个弯头。
这两种方法有什么区别?为什么第一张图上没有弯头?
根据文档,它们都应用了相同的距离法,即 "样本到其最近的簇中心的平方距离之和"。
答案
我刚才也遇到了同样的问题,更新到Yellowbrick v1.1就解决了。
pip install -U yellowbrick
或在Jupyter单元中。
!pip install -U yellowbrick
以上是关于Kmeans肘子方法不返回肘子。的主要内容,如果未能解决你的问题,请参考以下文章
前沿技术RPA 一文了解 UiPath 状态机 State Machine