所谓聚类分析,就是给定一个元素集合D,其中每个元素具有n个观测属性,对这些属性使用某种算法将D划分成K个子集,要求每个子集内部的元素之间相似度尽可能高,而不同子集的元素相似度尽可能低。聚类分析是一种无监督的观察式学习方法,在聚类前可以不知道类别甚至不用给定类别数量。目前聚类广泛应用于统计学、生物学、数据库技术和市场营销等领域。

聚类算法有很多种,如K-means(K均值聚类)、K中心聚类、密度聚类、谱系聚类、最大期望聚类等。这里我们重点介绍K-means聚类算法,该算法的基本思想是以空间中K个点为中心进行聚类,对最靠近它们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。K-means算法实现简单、计算速度快、原理易于理解、具有理想的聚类效果,因此该算法是公认的经典数据挖掘方法之一。

例如对于常见的二维数据集,设计K-means聚类方法,对80个二维数据点进行聚类分析。K-means算法的Python语言实现及处理过程如下:

如下图所示的80个二维样本数据集,存储为testSet文本文档。经过数据预处理和简单分析,得知该数据集共有4个类别,因而能确定聚类数K为4。

首先导入必要的模块:

import kmeans

(1) 从文件加载数据集
构建数据矩阵,从文本中逐行读取数据,形成供后继使用的数据矩阵。

dataSet=[]fileIn=open('testSet.txt')for line in fileIn.readlines():    lineArr=line.strip().split('\t')    dataSet.append([float(lineArr[0]),float(lineArr[1])])

(2) 调用kmeans算法进行数据聚类
通过以下命令调用设计的kmeans模块,进行数据聚类。

dataSet=np.mat(dataSet)k=4centroids,clusterAssment=kmeans.kmeanss(dataSet,k)

kmeans模块主要包含如下几个函数。
距离度量函数。这里使用的是欧氏距离,计算过程如下:

def eucDistance(vec1,vec2):

初始聚类中心选择。从数据集中随机选择K个数据点,用作初始聚类中心。

def initCentroids(dataSet,k):    numSamples,dim=dataSet.shape

K-Means 聚类算法。该算法会创建k个质心,然后将每个点分配到最近的质心,再重新计算质心。这个过程重复数次,直到数据点的簇分配结果不再改变位置。

def kmeanss(dataSet,k):

聚类结果显示。将聚类划分在的不同簇的数据,用不同的颜色和符号进行显示,同时画出最终的聚类中心。

def showCluster(dataSet,k,centroids,clusterAssement):

(3) 聚类结果显示

对80个二维数据,使用K-means方法进行聚类,聚类结果如图13-5所示,迭代后的聚类中心用方形表示,其他数据用不同颜色的原点表示。

图:二维数据的聚类结果

留言回复你在机器学习方面做过哪些有趣的应用,我们会在留言中随机抽取一位读者免费送出北京大学出版社出版的《Python 3 数据分析与机器学习实战》图书一本。

热 门 推 荐为你的Python程序加密用Python开发计时器程序用Python爬取WordPress官网所有插件用OpenCV和OCR识别图片中的表格数据推荐Python中文社区旗下的几个服务类公众号

文本聚类分析算法_Kmeans 算法实现二维数据聚类相关推荐

  1. K-means 算法实现二维数据聚类

    所谓聚类分析,就是给定一个元素集合D,其中每个元素具有n个观测属性,对这些属性使用某种算法将D划分成K个子集,要求每个子集内部的元素之间相似度尽可能高,而不同子集的元素相似度尽可能低.聚类分析是一种无 ...

  2. 【数据挖掘】K-Means 二维数据聚类分析 ( K-Means 迭代总结 | K-Means 初始中心点选择方案 | K-Means 算法优缺点 | K-Means 算法变种 )

    文章目录 K-Means 二维数据 聚类分析 数据样本及聚类要求 二维数据曼哈顿距离计算 K-Means 算法 步骤 第一次迭代 : 步骤 ( 1 ) 中心点初始化 第一次迭代 : 步骤 ( 2 ) ...

  3. 【数据挖掘】数据挖掘总结 ( K-Means 聚类算法 | 二维数据的 K-Means 聚类 ) ★

    文章目录 一. K-Means 聚类算法流程 二. 二维数据的 K-Means 聚类 1. 第一次迭代 2. 第二次迭代 参考博客 : [数据挖掘]聚类算法 简介 ( 基于划分的聚类方法 | 基于层次 ...

  4. 算法笔记-螺旋输出二维数组

    算法笔记-螺旋输出二维数组 1.思路:二维数组看做一个坐标,遍历者当成一个人,那么我们定义这个人的位置,以及当前面朝的方向,还有这个人转向次数.初始位置,人在(x,y)=(0,0)处,面向右方,右方的 ...

  5. 数据挖掘经典十大算法_K-Means算法

    数据挖掘经典十大算法_K-Means算法 一.从故事理解K-Means Clustering Algorithm 1.有四个牧师去郊区布道,一开始牧师们随意选了几个布道点,并且把这几个布道点的情况公告 ...

  6. iterp2函数--------二维数据内插值

    [语法说明] 1.zi=interp1(x,y,z,xi,yi):返回矩阵zi,其元素包含对应于参量xi和yi的元素.用户可以输入行向量和列向量xi和yi,此时,输出向量zi与矩阵meshgrid(x ...

  7. Python-深度学习-学习笔记(13):keras搭建卷积神经网络(对二维数据进行一维卷积)

    Python-深度学习-学习笔记(13):keras搭建卷积神经网络(对二维数据进行一维卷积) 卷积神经网络进行图像分类是深度学习关于图像处理的一个应用,卷积神经网络的优点是能够直接与图像像素进行卷积 ...

  8. 用Numpy和Pandas分析二维数据笔记

    用Numpy和Pandas分析二维数据 上节课,我们利用numpy和pandas分析了一维数据.在这节课中,你将学到这两种库的更多特性.并用它们来分析 二维数据,这节课后,你将能够使用pandas重新 ...

  9. Deep learning:十一(PCA和whitening在二维数据中的练习)

    前言: 这节主要是练习下PCA,PCA Whitening以及ZCA Whitening在2D数据上的使用,2D的数据集是45个数据点,每个数据点是2维的.参考的资料是:Exercise:PCA in ...

最新文章

  1. HAproxy七层负载均衡——环境搭建及实现过程详解
  2. 信号与系统 2022 春季学期第一次作业-作业题目准备
  3. java unicode补充字符带来的码点和代码单元问题
  4. 并发和在线用户数的思考
  5. AB1601的AD转换注意事项
  6. 新编辑神器,可以在终端运行 Jupyter Notebook 了!
  7. fcpx插件:Cinematic Tracking Title for Mac电影字幕标题动画
  8. VS2010+Opencv249 图像叠加 添加水印
  9. Centos6.8下SVN安装
  10. CentOS 7.6+mysql5.7 设置mysql开机自启动。
  11. 逍遥android模拟器设置,逍遥安卓模拟器最佳设置电脑上玩手游流畅不卡多开更好用...
  12. Java基础学习总结(176)——JDK 16 正式发布,一次性发布 17 个新特性
  13. php网页设计设计心得体会,网页设计心得体会范文
  14. 计算机应用基础 电子科技大学出版社,大学计算机基础课本答案(电子科技大学出版社)...
  15. lisp全部文本改宋体字型_如何将CAD里面的文字一下全改成宋体 CAD2014中如何将图...
  16. Hibernate 、继承关联映射
  17. css 怎么让图片一直旋转
  18. 为何C语言如此强大?到底可以做什么?
  19. jetson nano opencv 打开 CSI摄像头_OpenCV基础操作-读取、几何变换、阈值
  20. 无法访问计算机请检查名称的拼写,Win7访问共享文件夹提示“请检查名称的拼写”怎么办?...

热门文章

  1. Aspose.CAD for Java 20.1版-SEO狼术
  2. 什么是segmented control
  3. word中html的emz和wmz区别,各文件的MIME类型
  4. 与商超便利店巨头内卷“即时零售”
  5. Thinkpad x1 carbon 2022,2021 各个版本CPU性能对比
  6. 微服务之熔断、限流、降级 三板斧
  7. 百度脑图,唯一不黑的百度产品
  8. 互联网金融-众筹网站收集(转)
  9. 元年科技2022回顾:奋楫扬帆数字化,转型升级立潮头
  10. P7259 [COCI2009-2010#3] SORT 题解