Python 用Kmeans估计K的度量
我正试图使用弯头和BIC方法估计K平均数。X是数据点的多维数组(100000个数据点X 100个特征)Python 用Kmeans估计K的度量,python,k-means,Python,K Means,我正试图使用弯头和BIC方法估计K平均数。X是数据点的多维数组(100000个数据点X 100个特征) 以下是我用于弯头的代码: Ks = [40,50,60,70,80,90,100,110,120] ds = [] for K in Ks: cls = MiniBatchKMeans(K, batch_size =1000, random_state = 101) for i in xrange(0, len(X), 1000): chunk = newvec
以下是我用于弯头的代码:
Ks = [40,50,60,70,80,90,100,110,120]
ds = []
for K in Ks:
cls = MiniBatchKMeans(K, batch_size =1000, random_state = 101)
for i in xrange(0, len(X), 1000):
chunk = newvec[i:i + 1000]
cls.partial_fit(chunk)
ds.append(cls.inertia_)
plt.plot(Ks, ds)
plt.xlabel('Value of K')
plt.ylabel('Distortion')
plt.show()
我用于BIC的代码来自这里
以下是我使用以下每种方法得到的曲线图:
要使用的正确K值是什么?基于这些结果,这些是用于我的数据集的正确指标。
谢谢你。我认为你的数据集有太多维度和风险 但要回答你的问题,至少从肘部法来看,似乎K=90用肘部法。要使用BIC方法,请查看最高值(根据特定的实现;某些实现会反转符号)。这使得它有点模棱两可,但在K=60之后,它们的表现几乎都一样好 你也可以看看。它介绍了另一种估计K的方法,Gap法。我会说再运行一个指标来打破僵局,然后从3个指标中选择2个或更多返回的最佳K