LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 514|回复: 0

数据聚类算法 - 均值偏移算法

[复制链接]
发表于 2023-12-27 15:53:12 | 显示全部楼层 |阅读模式

均值偏移算法

它是另一种在无监督学习中使用的流行和强大的聚类算法。 它不做任何假设,因此它是非参数算法。 它也被称为分层聚类或均值聚类分析。 以下将是该算法的基本步骤 -

首先,需要从分配给它们自己的集群的数据点开始。

现在,它计算质心并更新新质心的位置。

通过重复这个过程,向簇的顶点靠近,即朝向更高密度的区域移动。

该算法停止在质心不再移动的阶段。


在下面的代码的帮助下,在Python中实现了Mean Shift聚类算法。使用Scikit-learn模块。

导入必要的软件包 -

import numpy as np
from sklearn.cluster import MeanShift
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")

以下代码将通过使用sklearn.dataset包中的make_blob来生成包含四个blob的二维数据集。

from sklearn.datasets.samples_generator import make_blobs

可以用下面的代码可视化数据集 -
  
centers = [[2,2],[4,5],[3,10]]
X, _ = make_blobs(n_samples = 500, centers = centers, cluster_std = 1)
plt.scatter(X[:,0],X[:,1])
plt.show()

执行上面示例代码,得到以下结果 -

  

现在,我们需要用输入数据来训练Mean Shift聚类模型。

ms = MeanShift()
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_

以下代码将按照输入数据打印聚类中心和预期的聚类数量 -

print(cluster_centers)
n_clusters_ = len(np.unique(labels))
print("Estimated clusters:", n_clusters_)
[[ 3.23005036 3.84771893]
[ 3.02057451 9.88928991]]
Estimated clusters: 2

下面给出的代码将有助于根据数据绘制和可视化机器的发现,并根据要找到的聚类数量进行装配。

colors = 10*['r.','g.','b.','c.','k.','y.','m.']
   for i in range(len(X)):
   plt.plot(X[0], X[1], colors[labels], markersize = 10)
plt.scatter(cluster_centers[:,0],cluster_centers[:,1],
   marker = "x",color = 'k', s = 150, linewidths = 5, zorder = 10)
plt.show()

执行上面示例代码,得到以下结果 -



//更多请阅读:https://www.yiibai.com/ai_with_python/ai_with_python_unsupervised_learning_clustering.html


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表