• 简介

相对于决策树、朴素贝叶斯、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. ftp服务器在linux中安装

    1.安装 执行 yum -y install vsftpd 2.检验是否安装vsftpd : rmp -qa | grep vsftpd      默认配置文件/ect/vsftpd/vsftpd.c ...

  2. xunsearch实战经验总结

    一.定义好配置文件(非常关键) a):如果需要做精确搜索建议对字段设定index=self,tokenizer = full,不然xunsearch会对字段做分词处理: b):数字区间搜索需设定 ty ...

  3. uni-app 路由navigate

    uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS.Android.H5.小程序等多个平台. 公司最近在写APP应用到了uni-app  我在写的时 ...

  4. 端到端图片识别 Python实现 Tensorflow

    基于python语言的tensorflow的‘端到端’的字符型验证码识别 1   Abstract 验证码(CAPTCHA)的诞生本身是为了自动区分 自然人 和 机器人 的一套公开方法, 但是近几年的 ...

  5. C/C++ 图像二进制存储与读取

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50782792 在深度学习时,制作样本数 ...

  6. HDU5514 Frogs

    /* HDU5514 Frogs http://acm.hdu.edu.cn/showproblem.php?pid=5514 容斥原理 * * */ #include <cstdio> ...

  7. yii 表单小部件使用

    首先创建model层 因为要使用表单小部件 所以要加载相应的组件 这里需要的组件有 yii\widgets\ActiveForm 和 yii\helpers\Html 接下来在model定义的clas ...

  8. 【Android 应用开发】Android 平台 HTTP网速測试 案例 API 分析

    作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/25996817 工信部规定的网速測试标准 : 除普通网页測速 ...

  9. 通达OA 小飞鱼工作流在线培训教程(一)HTML基础介绍

    应一些刚接触工作流设计朋友的要求,这里开设一个系列教程,对通达OA工作流设计相关的内容做个介绍.方便解决一些日常经常出现的问题,希望对刚刚接触这部分工作的朋友能够有些帮助. 工作流设计须要多方面的知识 ...

  10. 24岁菜鸟,能一个人撑起App开发吗

     "疲惫吾心.怎样躲藏.四处荒芜,怎话忧伤?"临近中秋,看到艾瑞斯的QQ签名,无尽的伤感.这个年仅24的青年.连续3年没有回家了,近期一个月总是失眠,没有家人的陪伴,就连女朋友 ...