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

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

3天内不再提示

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

DPVg_AI_era 来源:未知 作者:易水寒 2018-05-27 09:59 次阅读

无监督学习是机器学习技术中的一类,用于发现数据中的模式。本文介绍用Python进行无监督学习的几种聚类算法,包括K-Means聚类、分层聚类、t-SNE聚类、DBSCAN聚类等。

无监督算法的数据没有标注,这意味着只提供输入变量(X),没有相应的输出变量。在无监督学习中,算法自己去发现数据中有意义的结构。

Facebook首席AI科学家Yan Lecun解释说,无监督学习——即教机器自己学习,不需要明确地告诉它们所做的每一件事情是对还是错,是“真正的”AI的关键。

监督学习 VS 无监督学习

在监督学习中,系统试图从之前给出的例子中学习。反之,在无监督学习中,系统试图从给出的例子中直接找到模式。因此,如果数据集有标记,那么它是有监督问题,如果数据集无标记,那么它是一个无监督问题。

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

如上图,左边是监督学习的例子; 我们使用回归技术来寻找特征之间的最佳拟合线。而在无监督学习中,输入是基于特征分离的,预测则取决于它属于哪个聚类(cluster)。

重要术语

特征(Feature):用于进行预测的输入变量。

预测(Predictions):当提供一个输入示例时,模型的输出。

示例(Example):数据集的一行。一个示例包含一个或多个特征,可能有标签

标签(Label):特征的结果。

为无监督学习做准备

在本文中,我们使用Iris数据集(鸢尾花卉数据集)来进行我们的第一次预测。该数据集包含150条记录的一组数据,有5个属性——花瓣长度,花瓣宽度,萼片长度,萼片宽度和类别。三个类别分别是Iris Setosa(山鸢尾),Iris Virginica(维吉尼亚鸢尾)和Iris Versicolor(变色鸢尾)。对于我们的无监督算法,我们给出鸢尾花的这四个特征,并预测它属于哪一类。我们在Python中使用sklearn Library来加载Iris数据集,并使用matplotlib来进行数据可视化。以下是代码片段。

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

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

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

紫罗兰色:山鸢尾,绿色:维吉尼亚鸢尾,黄色:变色鸢尾

聚类(Clustering)

在聚类中,数据被分成几个组。简单地说,其目的是将具有相似特征的组分开,并将它们组成聚类。

可视化示例:

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

在上图中,左边的图像是未完成分类的原始数据,右边的图像是聚类的(根据数据的特征对数据进行分类)。当给出要预测的输入时,就会根据它的特征在它所属的聚类中进行检查,并做出预测。

Python中的K-Means聚类

K-Means是一种迭代聚类算法,它的目的是在每次迭代中找到局部最大值。首先,选择所需数量的聚类。由于我们已经知道涉及3个类,因此我们通过将参数“n_clusters”传递到K-Means模型中,将数据分组为3个类。

现在,随机将三个点(输入)分成三个聚类。基于每个点之间的质心距离,下一个给定的输入被分为所需的聚类。然后,重新计算所有聚类的质心。

聚类的每个质心是特征值的集合,定义生成的组。检查质心特征权重可以定性地解释每个聚类代表什么类型的组。

我们从sklearn库导入K-Means模型,拟合特征并进行预测。

Python中的K Means实现:

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

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

分层聚类

顾名思义,分层聚类是一种构建聚类层次结构的算法。该算法从分配给它们自己的一个cluster的所有数据开始,然后将最近的两个cluster加入同一个cluster。最后,当只剩下一个cluster时,算法结束。

分层聚类的完成可以使用树状图来表示。下面是一个分层聚类的例子。 数据集可以在这里找到:https://raw.githubusercontent.com/vihar/unsupervised-learning-with-python/master/seeds-less-rows.csv

Python中的分层聚类实现:

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

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

K Means聚类与分层聚类的区别

分层聚类不能很好地处理大数据,但K Means聚类可以。因为K Means的时间复杂度是线性的,即O(n),而分层聚类的时间复杂度是二次的,即O(n2)。

在K Means聚类中,当我们从聚类的任意选择开始时,多次运行算法产生的结果可能会有所不同。不过结果可以在分层聚类中重现。

当聚类的形状是超球形时(如2D中的圆形,3D中的球形),K Means聚类更好。

K-Means聚类不允许嘈杂的数据,而在分层聚类中,可以直接使用嘈杂的数据集进行聚类。

t-SNE聚类

t-SNE聚类是用于可视化的无监督学习方法之一。t-SNE表示t分布的随机近邻嵌入。它将高维空间映射到可以可视化的2或3维空间。具体而言,它通过二维点或三维点对每个高维对象进行建模,使得相似的对象由附近的点建模,而不相似的对象很大概率由远离的点建模。

Python中的t-SNE聚类实现,数据集是Iris数据集:

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

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

这里Iris数据集具有四个特征(4d),它被变换并以二维图形表示。类似地,t-SNE模型可以应用于具有n个特征的数据集。

DBSCAN聚类

DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种流行的聚类算法,用作预测分析中 K-means的替代。它不要求输入聚类的数值才能运行。但作为交换,你必须调整其他两个参数。

scikit-learn实现提供了eps和min_samples参数的默认值,但这些参数通常需要调整。eps参数是在同一邻域中考虑的两个数据点之间的最大距离。min_samples参数是被认为是聚类的邻域中的数据点的最小量。

Python中的DBSCAN聚类:

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

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

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

    关注

    2

    文章

    118

    浏览量

    12127
  • 机器学习
    +关注

    关注

    66

    文章

    8413

    浏览量

    132601
  • python
    +关注

    关注

    56

    文章

    4795

    浏览量

    84656
  • 无监督学习
    +关注

    关注

    1

    文章

    16

    浏览量

    2755

原文标题:【干货】Python无监督学习的4大聚类算法

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

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

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

    Web文档k-means算法的改进

    Web文档k-means算法的改进 介绍了Web文档中普遍使用的、基于分割的
    发表于 09-19 09:17 1055次阅读
    Web文档<b class='flag-5'>聚</b><b class='flag-5'>类</b>中<b class='flag-5'>k-means</b><b class='flag-5'>算法</b>的改进

    K-means+算法研究综述

    介绍了K-means 算法的目标函数、算法流程,并列举了一个实例,指出了数据子集的数目K、初
    发表于 05-07 14:09 27次下载
    <b class='flag-5'>K-means</b>+<b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>研究综述

    基于离散量改进k-means初始中心选择的算法

    传统kmeans算法由于初始中心的选择是随机的,因此会使结果不稳定。针对这个问题,提出一种基于离散量改进
    发表于 11-20 10:03 2次下载

    基于密度的K-means算法数目中应用

    针对传统的K-means算法无法预先明确数目,对初始中心选取敏感且易受离群孤点影响导致
    发表于 11-25 11:35 0次下载

    K均值算法的MATLAB实现

    K-means算法是最简单的一种算法算法的目的是使各个样本与所在
    发表于 12-01 14:07 2.1w次阅读
    <b class='flag-5'>K</b>均值<b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>的MATLAB实现

    基于布谷鸟搜索的K-means算法

    针对原始K-means算法受初始中心影响过大以及容易陷入局部最优的不足,提出一种基于改进
    发表于 12-13 17:24 3次下载

    大数据处理的优化抽样K-means算法

    针对大数据环境下K-means算法精度不足和收敛速度慢的问题,提出一种基于优化抽样
    发表于 12-22 15:47 4次下载
    大数据处理的优化抽样<b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>K-means</b><b class='flag-5'>算法</b>

    k means算法实例

    与分类不同,分类是示例式学习,要求分类前明确各个类别,并断言每个元素映射到一个类别,而是观察式学习,在
    发表于 02-12 16:42 1.6w次阅读
    <b class='flag-5'>k</b> <b class='flag-5'>means</b><b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>实例

    K-Means算法的简单介绍

    K-Means是十大经典数据挖掘算法之一。K-Means和KNN(K邻近)看上去都是K打头,但却是不同种类的
    发表于 07-05 14:18 4917次阅读

    如何使用多维网格空间进行改进K-means算法资料概述

    K-means算法是被广泛使用的一种算法,传统的-means
    发表于 12-13 17:56 1次下载
    如何使用多维网格空间进行改进<b class='flag-5'>K-means</b><b class='flag-5'>聚</b><b class='flag-5'>类</b><b class='flag-5'>算法</b>资料<b class='flag-5'>概述</b>

    如何使用K-Means算法改进的特征加权算法详细资料概述

    聚类分析是将研究对象分为相对同质的群组的统计分析技术,聚类分析的核心就是发现有用的对象簇。K-means算法由于具有出色的速度和良好的可扩展性,一直备受广大学者的关注。然而,传统的
    发表于 12-20 10:28 10次下载

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

    或聚类分析是监督学习问题。它通常被用作数据分析技术,用于发现数据中的有趣模式,例如基于其行为的客户群。有许多
    的头像 发表于 03-12 18:23 2226次阅读

    K-MEANS算法概述及工作原理

    K-means 是一种算法,且对于数据科学家而言,是简单且热门的监督式机器
    的头像 发表于 06-06 11:53 4001次阅读

    K-means算法指南

    技术领域中,K-means可能是最常见和经常使用的技术之一。K-means使用迭代细化方法,基于用户定义的集群数量(由变量K表示)和数
    的头像 发表于 10-28 14:25 1462次阅读