0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

10种聚类算法和Python代码2

jf_78858299 来源:海豚科学实验室 作者:海豚科学实验室 2023-02-20 13:57 次阅读

3、亲和力传播

亲和力传播包括找到一组最能概括数据的范例。

我们设计了一种名为“亲和传播”的方法,它作为两对数据点之间相似度的输入度量。在数据点之间交换实值消息,直到一组高质量的范例和相应的群集逐渐出现

—源自:《通过在数据点之间传递消息》2007。

它是通过 AffinityPropagation 类实现的,要调整的主要配置是将“ 阻尼 ”设置为0.5到1,甚至可能是“首选项”。

下面列出了完整的示例。

# 亲和力传播聚类
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import AffinityPropagation
from matplotlib import pyplot
# 定义数据集
X, _ = make_classification(n_samples=1000, 
                           n_features=2, 
                           n_informative=2, 
                           n_redundant=0, 
                           n_clusters_per_class=1, 
                           random_state=4)
# 定义模型
model = AffinityPropagation(damping=0.9)
# 匹配模型
model.fit(X)
# 为每个示例分配一个集群
yhat = model.predict(X)
# 检索唯一群集
clusters = unique(yhat)
# 为每个群集的样本创建散点图
for cluster in clusters:
    # 获取此群集的示例的行索引
    row_ix = where(yhat == cluster)
    # 创建这些样本的散布
    pyplot.scatter(X[row_ix, 0], X[row_ix, 1])
# 绘制散点图
pyplot.show()

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,我无法取得良好的结果。

图片

图:数据集的散点图,具有使用亲和力传播识别的聚类

4、聚合聚类

聚合聚类涉及合并示例,直到达到所需的群集数量为止。它是层次聚类方法的更广泛类的一部分,通过 AgglomerationClustering 类实现的,主要配置是“ n _ clusters ”集,这是对数据中的群集数量的估计,例如2。下面列出了完整的示例。

# 聚合聚类
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import AgglomerativeClustering
from matplotlib import pyplot
# 定义数据集
X, _ = make_classification(n_samples=1000, 
                           n_features=2, 
                           n_informative=2, 
                           n_redundant=0, 
                           n_clusters_per_class=1, 
                           random_state=4)
# 定义模型
model = AgglomerativeClustering(n_clusters=2)
# 模型拟合与聚类预测
yhat = model.fit_predict(X)
# 检索唯一群集
clusters = unique(yhat)
# 为每个群集的样本创建散点图
for cluster in clusters:
    # 获取此群集的示例的行索引
    row_ix = where(yhat == cluster)
    # 创建这些样本的散布
    pyplot.scatter(X[row_ix, 0], X[row_ix, 1])
# 绘制散点图
pyplot.show()

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,可以找到一个合理的分组。

图片

图:使用聚集聚类识别出具有聚类的数据集的散点图

5、BIRCH

BIRCH 聚类( BIRCH 是平衡迭代减少的缩写,聚类使用层次结构)包括构造一个树状结构,从中提取聚类质心。

BIRCH 递增地和动态地群集传入的多维度量数据点,以尝试利用可用资源(即可用内存和时间约束)产生最佳质量的聚类。

—源自:《 BIRCH :1996年大型数据库的高效数据聚类方法》

它是通过 Birch 类实现的,主要配置是“ threshold ”和“ n _ clusters ”超参数,后者提供了群集数量的估计。下面列出了完整的示例。

# birch聚类
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import Birch
from matplotlib import pyplot
# 定义数据集
X, _ = make_classification(n_samples=1000, 
                           n_features=2, 
                           n_informative=2, 
                           n_redundant=0,
                           n_clusters_per_class=1, 
                           random_state=4)
# 定义模型
model = Birch(threshold=0.01, n_clusters=2)
# 适配模型
model.fit(X)
# 为每个示例分配一个集群
yhat = model.predict(X)
# 检索唯一群集
clusters = unique(yhat)
# 为每个群集的样本创建散点图
for cluster in clusters:
    # 获取此群集的示例的行索引
    row_ix = where(yhat == cluster)
    # 创建这些样本的散布
    pyplot.scatter(X[row_ix, 0], X[row_ix, 1])
# 绘制散点图
pyplot.show()

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,可以找到一个很好的分组。

图片

图:使用BIRCH聚类确定具有聚类的数据集的散点图

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4557

    浏览量

    66826
  • 数据分析
    +关注

    关注

    2

    文章

    1353

    浏览量

    33738
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83477
收藏 人收藏

    评论

    相关推荐

    FCM算法用于医学图像分割matlab源程序

    FCM算法以及改进模糊算法用于医学图像分割的matlab源程序
    发表于 05-11 23:30

    FCM算法以及改进模糊算法用于医学图像分割的matlab源程序

    FCM算法以及改进模糊算法用于医学图像分割的matlab源程序
    发表于 05-11 23:54

    ML之HierarchicalClustering:自定义HierarchicalClustering层次算法

    ML之HierarchicalClustering:自定义HierarchicalClustering层次算法
    发表于 12-25 14:54

    请教51用的算法

    在一个数组中使用算法找出重复出现的数组元素,然后使用其他字符表示,达到减少储存空间的作用,有哪位大哥做过相关的项目吗?希望可以赐教一下或者有偿提供服务也可以!
    发表于 03-09 23:07

    算法学习

    KMeans理论与算法实现
    发表于 03-12 07:02

    深非监督学习-Hierarchical clustering 层次python的实现

    【深度学习基础-17】非监督学习-Hierarchical clustering 层次-python实现
    发表于 04-28 10:07

    Python如何实现模糊动态

    利用Python实现模糊动态
    发表于 06-02 17:38

    K均值算法的MATLAB怎么实现?

    什么是K-均值法?K均值算法的MATLAB怎么实现?
    发表于 06-10 10:01

    基于和竞争克隆机制的多智能体免疫算法

    包含分布式电源的配电网无功优化matlab源代码代码按照高水平文章复现,保证正确,可先发您文章看是否满足您的要求利用分布式电源的无功补偿能力,提出了一基于
    发表于 12-29 06:50

    10种聚类介绍和Python代码

    分享一篇关于聚类的文章,10种聚类介绍和Python代码
    的头像 发表于 07-30 10:25 1516次阅读

    10种顶流聚类算法Python实现(附完整代码

    分享一篇关于聚类的文章:10种聚类算法Python代码
    的头像 发表于 01-07 09:33 831次阅读

    10种聚类算法Python代码1

    分享一篇关于聚类的文章: **10种聚类算法Python代码** 。文末提供`jupyter notebook`的完整
    的头像 发表于 02-20 13:57 549次阅读
    <b class='flag-5'>10</b>种聚类<b class='flag-5'>算法</b>和<b class='flag-5'>Python</b><b class='flag-5'>代码</b>1

    10种聚类算法Python代码3

    分享一篇关于聚类的文章: **10种聚类算法Python代码** 。文末提供`jupyter notebook`的完整
    的头像 发表于 02-20 13:57 854次阅读
    <b class='flag-5'>10</b>种聚类<b class='flag-5'>算法</b>和<b class='flag-5'>Python</b><b class='flag-5'>代码</b>3

    10种聚类算法Python代码4

    分享一篇关于聚类的文章: **10种聚类算法Python代码** 。文末提供`jupyter notebook`的完整
    的头像 发表于 02-20 13:57 1004次阅读
    <b class='flag-5'>10</b>种聚类<b class='flag-5'>算法</b>和<b class='flag-5'>Python</b><b class='flag-5'>代码</b>4

    [源代码]Python算法详解

    [源代码]Python算法详解[源代码]Python算法详解
    发表于 06-06 17:50 0次下载