• 简介

相对于决策树、朴素贝叶斯、SVM等有监督学习,聚类算法属于无监督学习。

有监督学习通常根据数据集的标签进行分类,而无监督学习中,数据集并没有相应的标签,算法仅根据数据集进行划分。

由于具有出色的速度和良好的可扩展性,Kmeans聚类算法算得上是最著名的聚类方法。

  • 基本思想

在没有标签的数据集中,所有的数据点都是同一类的。

  

在这张图中,虽然数据都为同一类,但是可以直观的看出,数据集存在簇或聚类。这种数据没有比标签,但能发现其结构的情况,称作非监督学习。

最基本的聚类算法,也是目前使用最多的聚类算法叫做K-均值(K-Means)。

假设一组数据集为下图:

      

他们应该有两个簇,其中簇的中心如下图:

      

在K-Means算法中,首先随便画出聚类中心,它可以是不正确的:

(假设上方绿点为中心1,下方绿点为中心2)

      

K-Means算法分为两个步骤:

1、分配

2、优化

进行第一步,对于上图的数据集,首先找出在所有红色点中,距离中心1比距离中心2更近的点

简单的方法是找出两个中心点的垂直平分线,将红色的点分割为两部分,分别是距离各自中心更近的点

      

第二步是优化。首先将聚类中心和第一步分配完的点相连接,然后开始优化:移动聚类中心,使得与聚类中心相连接的线的平方和最短。

      

      

多次进行步骤1和2,即先分配再优化,聚类中心将会逐步移动到数据簇的中心。

        

  • 代码实现

环境:MacOS mojave  10.14.3

Python  3.7.0

使用库:scikit-learn    0.19.2

sklearn.cluster.KMeans官方库:https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

>>> from sklearn.cluster import KMeans
>>> import numpy as np
>>> X = np.array([[1, 2], [1, 4], [1, 0],
... [10, 2], [10, 4], [10, 0]]) #输入六个数据点 >>> kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
#确定一共有两个聚类中心 >>> kmeans.labels_
array([1, 1, 1, 0, 0, 0], dtype=int32) >>> kmeans.predict([[0, 0], [12, 3]]) #预测两个新点的聚类分类情况
array([1, 0], dtype=int32) >>> kmeans.cluster_centers_ #输出两个聚类中心的坐标
array([[10., 2.],
[ 1., 2.]])

聚类(Clustering)的更多相关文章

  1. Stanford机器学习笔记-9. 聚类(Clustering)

    9. Clustering Content 9. Clustering 9.1 Supervised Learning and Unsupervised Learning 9.2 K-means al ...

  2. sklearn:聚类clustering

    http://blog.csdn.net/pipisorry/article/details/53185758 不同聚类效果比较 sklearn不同聚类示例比较 A comparison of the ...

  3. 机器学习课程-第8周-聚类(Clustering)—K-Mean算法

    1. 聚类(Clustering) 1.1 无监督学习: 简介 在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负样本的决策边界,在这里的监督学习中,我们有一系列标签 ...

  4. 机器学习之&&Andrew Ng课程复习--- 聚类——Clustering

    第十三章.聚类--Clustering ******************************************************************************** ...

  5. [C8] 聚类(Clustering)

    聚类(Clustering) 非监督学习:简介(Unsupervised Learning: Introduction) 本章节介绍聚类算法,这是我们学习的第一个非监督学习算法--学习无标签数据,而不 ...

  6. 机器学习(九)-------- 聚类(Clustering) K-均值算法 K-Means

    无监督学习 没有标签 聚类(Clustering) 图上的数据看起来可以分成两个分开的点集(称为簇),这就是为聚类算法. 此后我们还将提到其他类型的非监督学习算法,它们可以为我们找到其他类型的结构或者 ...

  7. 机器学习-聚类(clustering)算法:K-means算法

    1. 归类: 聚类(clustering):属于非监督学习(unsupervised learning) 无类别标记(class label) 2. 举例: 3. Kmeans算法 3.1 clust ...

  8. 聚类clustering

    聚类:把相似的东西分到一组,是无监督学习. 聚类算法的分类: (1)基于划分聚类算法(partition clustering):建立数据的不同分割,然后用相同标准评价聚类结果.(比如最小化平方误差和 ...

  9. 海量数据挖掘MMDS week5: 聚类clustering

    http://blog.csdn.net/pipisorry/article/details/49427989 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  10. [综]聚类Clustering

    Annie19921223的博客 [转载]用MATLAB做聚类分析 http://blog.sina.com.cn/s/blog_9f8cf10d0101f60p.html Free Mind 漫谈 ...

随机推荐

  1. SpringBoot 配置 @ConfigurationProperties 与 @Value 区别

    一.SpringBoot 配置 @ConfigurationProperties 与 @Value 区别 配置文件 yml 还是 properties 他们都能获取到值: 如果说,我们只是在某个业务逻 ...

  2. 使用Spring Initializer快速创建Spring Boot项目

    目录结构 IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目:选择我们需要的模块:向导会联网创建Spring Boot项目:默认生成的Spring Boot项目: 主程序 ...

  3. telnet允许root用户登录

    默认情况下,linux不允许root用户以telnet方式登录linux主机,若要允许root用户登录,可采取以下3种方法之一:    1.修改login文件 redhat中对于远程登录的限制体现在/ ...

  4. OpenLayers3基础教程——OL3 介绍control

    概述: 本文讲述的是Ol3中的control的介绍和应用. OL2和OL3 control比較: 相比較Ol2的control,OL3显得特别少,下图分别为Ol2和Ol3的control: Ol2的c ...

  5. 基于lucene的案例开发:纵横小说分布式採集

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/46812645 http://www.llwjy.com/blogdetail/9 ...

  6. bzoj4032: [HEOI2015]最短不公共子串(SAM+DP)

    4032: [HEOI2015]最短不公共子串 题目:传送门 题解: 陈年老题良心%你赛膜爆嘎爷 当初做题...一眼SAM...结果只会两种直接DP的情况... 情况1: 直接设f[i][j] 表示的 ...

  7. category的概念

    category 的意思应该是为基类添加一个子类的声明方法 可以在创建基类对象的时候访问到子类的对象方法 category 可以说是 类的扩展 也可以说是 将类分成了几个模块 需要注意的是 在cate ...

  8. ROS-SLAM-gmapping

    前言:gmapping是最常用和成熟的slam导航算法,gmapping功能包集成了Rao-Blackwellized粒子滤波算法,为开发者隐去了复杂的内部实现. 前提:已下载并编译了相关功能包集,如 ...

  9. ROS-动态参数

    前言:在节点外部改变参数的方式有:参数服务器.服务.主题以及动态参数. 1.新建cfg文件 在chapter2_tutorials包下新建cfg文件夹,在cfg文件夹下新建chapter2.cfg文件 ...

  10. ROS安装教程

    对于ROS的安装,在它的官方网站: http://wiki.ros.org/ROS/Installation 中也有详细说明.但是对于像博主这样先天英语发育不全的人来说,直接看官网还是有点困难的. 所 ...