我正在尝试使用 SOM 对我的数据进行聚类,首先我想获得最好的 K。但我需要一条线或其他东西来检测图中的最佳 K。我尝试使用 KElbowVisualizer() 但它总是显示错误:
YellowbrickTypeError:提供的模型不是聚类估计器;尝试使用分类器或回归分数可视化工具!
这是我的代码:
from sklearn_som.som import SOM
som = SOM(m = 1, n = i, dim = data.shape[1])
visualizer = KElbowVisualizer(som, k = (1,11))
visualizer.fit(data)
visualizer.show()
我还使用了 matplotlib 中的普通 Plot(),但我看不到 Best k,我的代码:
inertia = []
for i in range (1,31):
som = SOM(m = 1, n = i, dim = data.shape[1])
som.fit_predict(data)
inertia.append(som.inertia_)
plt.plot(range(1,31), inertia)
plt.title('elbow method for SOM')
plt.xlabel('number of clusters')
plt.ylabel('WCSS')
plt.show()
那么,请问我该如何在情节中或使用代码来做到这一点?