作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以按照文档中的示例 (here):
The KElbowVisualizer implements the “elbow” method to help data scientists select the optimal number of clusters by fitting the model with a range of values for K. If the line chart resembles an arm, then the “elbow” (the point of inflection on the curve) is a good indication that the underlying model fits best at that point.
图表中没有弯头怎么办?当我在我的数据集上运行相同的代码时,输出是:
因此,每增加一个集群,失真分数就会不断增加。
但是,当我使用 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
关于python - Kmeans 肘部方法不返回肘部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54423439/
我是一名优秀的程序员,十分优秀!