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

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

3天内不再提示

10种聚类算法和Python代码3

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

6、DBSCAN

DBSCAN 聚类(其中 DBSCAN 是基于密度的空间聚类的噪声应用程序)涉及在域中寻找高密度区域,并将其周围的特征空间区域扩展为群集。

…我们提出了新的聚类算法 DBSCAN 依赖于基于密度的概念的集群设计,以发现任意形状的集群。DBSCAN 只需要一个输入参数,并支持用户为其确定适当的值

-源自:《基于密度的噪声大空间数据库聚类发现算法》,1996

它是通过 DBSCAN 类实现的,主要配置是“ eps ”和“ min _ samples ”超参数。

下面列出了完整的示例。

# dbscan 聚类
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import DBSCAN
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 = DBSCAN(eps=0.30, min_samples=9)
# 模型拟合与聚类预测
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()

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,尽管需要更多的调整,但是找到了合理的分组。

图片

图:使用DBSCAN集群识别出具有集群的数据集的散点图

7、K均值

K-均值聚类可以是最常见的聚类算法,并涉及向群集分配示例,以尽量减少每个群集内的方差。

本文的主要目的是描述一种基于样本将 N 维种群划分为 k 个集合的过程。这个叫做“ K-均值”的过程似乎给出了在类内方差意义上相当有效的分区。

-源自:《关于多元观测的分类和分析的一些方法》1967年

它是通过 K-均值类实现的,要优化的主要配置是“ n _ clusters ”超参数设置为数据中估计的群集数量。下面列出了完整的示例。

# k-means 聚类
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import KMeans
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 = KMeans(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()

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

图片

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

8、Mini-Batch K-均值

Mini-Batch K-均值是 K-均值的修改版本,它使用小批量的样本而不是整个数据集对群集质心进行更新,这可以使大数据集的更新速度更快,并且可能对统计噪声更健壮。

...我们建议使用 k-均值聚类的迷你批量优化。与经典批处理算法相比,这降低了计算成本的数量级,同时提供了比在线随机梯度下降更好的解决方案。

—源自:《Web-Scale K-均值聚类》2010

它是通过 MiniBatchKMeans 类实现的,要优化的主配置是“ n _ clusters ”超参数,设置为数据中估计的群集数量。下面列出了完整的示例。

# mini-batch k均值聚类
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import MiniBatchKMeans
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 = MiniBatchKMeans(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()

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,会找到与标准 K-均值算法相当的结果。

图片

图:带有最小批次K均值聚类的聚类数据集的散点图

9、均值漂移聚类

均值漂移聚类涉及到根据特征空间中的实例密度来寻找和调整质心。

对离散数据证明了递推平均移位程序收敛到最接近驻点的基础密度函数,从而证明了它在检测密度模式中的应用。

—源自:《Mean Shift :面向特征空间分析的稳健方法》,2002

它是通过 MeanShift 类实现的,主要配置是“带宽”超参数。下面列出了完整的示例。

# 均值漂移聚类
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import MeanShift
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 = MeanShift()
# 模型拟合与聚类预测
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()

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

图片

图:具有均值漂移聚类的聚类数据集散点图

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

    关注

    30

    文章

    4741

    浏览量

    68326
  • 数据分析
    +关注

    关注

    2

    文章

    1427

    浏览量

    34007
  • python
    +关注

    关注

    55

    文章

    4779

    浏览量

    84440
收藏 人收藏

    评论

    相关推荐

    Python如何实现模糊动态

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

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

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

    算法融合算法研究

    算法融合算法研究首先对
    发表于 08-10 15:08 33次下载
    <b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>及<b class='flag-5'>聚</b><b class='flag-5'>类</b>融合<b class='flag-5'>算法</b>研究

    改进的BIRCH算法方法

    为解决传统BIRCH算法对数据对象输入顺序敏感、结果不稳定的问题,提出了一改进的BIRCH算法。该
    发表于 11-10 15:52 1次下载
    一<b class='flag-5'>种</b>改进的BIRCH<b class='flag-5'>算法</b><b class='flag-5'>聚</b><b class='flag-5'>类</b>方法

    新的基于流行距离的谱算法

    本文提出了一新的基于流行距离的谱算法,这是一新型的聚类分析算法。不仅能够对任意的非规则形
    发表于 12-07 14:53 3次下载

    基于密度DBSCAN的算法

    本文开始介绍了算法概念,其次阐述了算法的分类,最后详细介绍了
    的头像 发表于 04-26 10:56 2.2w次阅读
    基于密度DBSCAN的<b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>

    Python无监督学习的几种算法包括K-Means,分层等详细概述

    无监督学习是机器学习技术中的一,用于发现数据中的模式。本文介绍用Python进行无监督学习的几种算法,包括K-Means
    的头像 发表于 05-27 09:59 3w次阅读
    <b class='flag-5'>Python</b>无监督学习的几种<b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>包括K-Means<b class='flag-5'>聚</b><b class='flag-5'>类</b>,分层<b class='flag-5'>聚</b><b class='flag-5'>类</b>等详细概述

    如何在python中安装和使用顶级算法?

    以及每种算法的不同配置。在本教程中,你将发现如何在 python 中安装和使用顶级算法。 完成本教程后,你将知道:
    的头像 发表于 03-12 18:23 2206次阅读

    自适应的关联融合算法

    为解决传统算法多数需要预先设定聚参数且无法有效识别异常点和噪声点的问题,提出一自适应的关联融合
    发表于 04-01 16:16 13次下载
    一<b class='flag-5'>种</b>自适应的关联融合<b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>

    10介绍和Python代码

    分享一篇关于的文章,10介绍和Python
    的头像 发表于 07-30 10:25 3021次阅读

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

    分享一篇关于的文章:10算法
    的头像 发表于 01-07 09:33 1477次阅读

    10算法Python代码1

    分享一篇关于的文章: **10算法
    的头像 发表于 02-20 13:57 825次阅读
    <b class='flag-5'>10</b><b class='flag-5'>种</b><b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>和<b class='flag-5'>Python</b><b class='flag-5'>代码</b>1

    10算法Python代码2

    分享一篇关于的文章: **10算法
    的头像 发表于 02-20 13:57 966次阅读
    <b class='flag-5'>10</b><b class='flag-5'>种</b><b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>和<b class='flag-5'>Python</b><b class='flag-5'>代码</b>2

    10算法Python代码4

    分享一篇关于的文章: **10算法
    的头像 发表于 02-20 13:57 1273次阅读
    <b class='flag-5'>10</b><b class='flag-5'>种</b><b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>和<b class='flag-5'>Python</b><b class='flag-5'>代码</b>4

    如何在 Python 中安装和使用顶级算法

    有许多算法可供选择,对于所有情况,没有单一的最佳算法。相反,最好探索一系列
    的头像 发表于 05-22 09:13 562次阅读
    如何在 <b class='flag-5'>Python</b> 中安装和使用顶级<b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>