Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用Kmeans估计K的度量_Python_K Means - Fatal编程技术网

Python 用Kmeans估计K的度量

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

我正试图使用弯头和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[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