肘部法运行报错:x与y维度不匹配,请求排查绘图问题
KMeans肘部法绘图报错解决方案
问题根源
你把绘图代码(plt.plot()、plt.show())放到了for循环内部,导致第一次循环时:
range(1,11)生成的x轴数据是10个元素(形状(10,))- 但
distortions此时只添加了1个聚类的 inertia 值(形状(1,))
两者维度不匹配,直接触发报错。
修正后的代码
把绘图相关代码移到for循环外面,等所有聚类的 inertia 值都收集完后再统一绘图:
distortions= [] for i in range (1, 11): Km = KMeans(n_clusters = i, init= 'k-means++', n_init=10, max_iter= 300, random_state=0) Km.fit(X) distortions.append(Km.inertia_) # 绘图代码移到循环外 plt.plot(range(1, 11), distortions, marker ='o') plt.xlabel('Number of clusters') plt.ylabel('Distortion') plt.show()
额外说明
- 循环内只负责计算每个聚类数对应的 inertia 并存入列表
- 循环结束后,
distortions会有10个元素,和range(1,11)的维度完全匹配,绘图就能正常运行
内容的提问来源于stack exchange,提问作者jose acebedo
相关产品推荐
相关产品推荐

