gpt4 book ai didi

python - K 表示在大小不均匀的簇上进行聚类

转载 作者:行者123 更新时间:2023-12-01 03:21:59 25 4
gpt4 key购买 nike

我必须在数据集上使用 k 均值聚类(我正在使用 Scikit learn),如下所示 enter image description here

但是当我应用 K 时,意味着它没有按预期给出质心。并且分类错误。另外,如果我想知道 scikit learn 中未正确分类的点,会有什么想法。这是代码。

km = KMeans(n_clusters=3, init='k-means++', max_iter=300, n_init=10)
km.fit(Train_data.values)
plt.plot(km.cluster_centers_[:,0],km.cluster_centers_[:,1],'ro')
plt.show()

这里 Train_data 是 pandas 框架,有 2 个特征和 3500 个样本,代码如下。

enter image description here

我可能会因为初始质心选择不当而发生这种情况,但是解决方案是什么?

最佳答案

首先,我希望您注意到两个图中 X 轴和 Y 轴的范围不同。所以,第一个质心(按 X 值排序)还不错。第二个和第三个是由于大量异常值而得到的。他们可能各占最右边两个簇的一半。此外,k 均值的输出取决于质心的初始选择,因此请查看不同的运行或将初始参数设置为随机是否会改善结果。提高效率的另一种方法是删除在距离 d 的半径内具有少于 n 个邻居的所有点。为了有效地实现这一点,您可能需要一个 kd 树,或者只使用 DBSCAN sklearn 提供的,看看它是否效果更好。

K-Means++ 也可能会选择异常值作为初始簇,如所解释的 here 。因此,您可能需要将 KMeans 中的初始化参数更改为“随机”并执行多次运行并获取最佳质心。

对于您的数据,由于它是二维的,因此很容易知道点是否正确分类。使用鼠标“拾取”近似质心的坐标(请参阅 here ),然后将从拾取坐标获得的簇与从 k-means 获得的簇进行比较。

关于python - K 表示在大小不均匀的簇上进行聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41824644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com