http://www.pythontip.com/blog/post/10044/

Python自然语言处理(三) -- 利用NLTK进行聚类

这篇文章介绍如何利用NLTK进行聚类,和上两篇文章Python自然语言处理(一)Python自然语言处理(二)不同,聚类不能算作自然语言处理的内容,但可以很容易应用到NLP中,因此将其划分到自然语言处理下。

-------------------进入正题--------------------

nltk内部封装了常用的聚类方法:Kmeans(K均值)、混合高斯聚类以及GAAC(组平均层次聚类)

使用这些聚类方法之前,需要保证已安装pynum,因为他们聚类传入的数据要求是pynum.array类型。

pynum的安装教程网上一大堆,这里不进行介绍。

一、数据准备

下面所有的聚类数据都是用这组:

注意:datas的元素是array类型

二、Kmeans聚类

用到的函数:

nltk.cluster.kmeans.KMeansClusterer(num_means, distance )#返回Kmeans聚类器的对象,num_means:目标类别数,distance:自定义距离函数

例子中,我们的目标类别数目为2, 距离函数为欧式距离

km.cluster(datas) #对数据集datas进行聚类

km.classify(data)#返回data被分到的类别

三、GAAC聚类

nltk.cluster.gaac.GAAClusterer(num_clusters , normalise )#num_clusters:目标类别数, normalise:是否归一化

这里需要说明一下,GAAC的距离使用的是点积的结果,并不是余弦相似度,如果normalise设置为True,将相似度进行归一化,此时的距离为余弦相似度

GAAC无法自定义相似度

例子中,我们设置目标类别为3,距离需要归一化,也即相似度为余弦相似度。

上述结果可以看出,所分的三个类为{(1,0)}, {(0,1)}, {[ 1,  1.] [ 5,  5.] [ 5 , 4.] [ 4 , 5.]}

结果和Kmeans非常不同,这是因为使用的相似度为余弦相似度

四、混合高斯聚类

用到的函数:

nltk.cluster.em.EMClusterer(initial_means)#initial_means:the means of the gaussian cluster centers



箭头表示聚类的结果,其余数据为中间数据。

nltk27_NLTK聚类分析的更多相关文章

  1. 地理信息系统 - ArcGIS - 高/低聚类分析工具(High/Low Clustering ---Getis-Ord General G)

    前段时间在学习空间统计相关的知识,于是把ArcGIS里Spatial Statistics工具箱里的工具好好研究了一遍,同时也整理了一些笔记上传分享.这一篇先聊一些基础概念,工具介绍篇随后上传. 空间 ...

  2. SPSS数据分析—聚类分析

    多元分析的主要思想之一就是降维,我们已经讲过了很多降维的方法,例如因子分析.主成分分析,多维尺度分析等,还有一种重要的降维方法,就是聚类分析. 聚类分析实质上就是按照距离远近将数据分成若干个类别,使得 ...

  3. 《BI那点儿事》Microsoft 聚类分析算法——三国人物身份划分

    什么是聚类分析? 聚类分析属于探索性的数据分析方法.通常,我们利用聚类分析将看似无序的对象进行分组.归类,以达到更好地理解研究对象的目的.聚类结果要求组内对象相似性较高,组间对象相似性较低.在三国数据 ...

  4. 《BI那点儿事》Microsoft 顺序分析和聚类分析算法

    Microsoft 顺序分析和聚类分析算法是由 Microsoft SQL Server Analysis Services 提供的一种顺序分析算法.您可以使用该算法来研究包含可通过下面的路径或“顺序 ...

  5. WEKA使用(基础配置+垃圾邮件过滤+聚类分析+关联挖掘)

    声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Windows系统下的WEKA,实验内容主要有三部分,第一是分类挖掘(垃圾邮件过滤),第二是聚类分析, ...

  6. R语言简单实现聚类分析计算与分析(基于系统聚类法)

    聚类分析计算与分析(基于系统聚类法) 下面以一个具体的例子来实现实证分析.2008年我国其中31个省.市和自治区的农村居民家庭平均每人全年消费性支出. 根据原始数据对我国省份进行归类统计. 原始数据如 ...

  7. R语言简单聚类分析

    #以R基础包自带的鸢尾花(Iris)数据进行聚类分析iris data <- iris[,:] #系统聚类法(层次聚类法) distance <- dist(data) #计算距离 iri ...

  8. Arcgis for JS之Cluster聚类分析的实现(基于区域范围的)

    原文:Arcgis for JS之Cluster聚类分析的实现(基于区域范围的) 咱们书接上文,在上文,实现了基于距离的空间聚类的算法实现,在本文,将继续介绍空间聚类之基于区域范围的实现方式,好了,闲 ...

  9. Arcgis for JS之Cluster聚类分析的实现

    原文:Arcgis for JS之Cluster聚类分析的实现 在做项目的时候,碰见了这样一个问题:给地图上标注点对象,数据是从数据库来 的,包含XY坐标信息的,通过graphic和graphicla ...

随机推荐

  1. 缺陷管理平台mantis安装及配置

    软件说明:Mantis是一个基于PHP技术的轻量级的开源缺陷跟踪系统,以Web操作的形式提供项目管理及缺陷跟踪服务.在功能上.实用性上足以满足中小型项目的管理及跟踪.更重要的是其开源,不需要负担任何费 ...

  2. Useful commmands in Gentoo

    Safe way to upgrade: emerge --sync & eix-sync emerge -avuDN --with-bdeps y --keep-going world et ...

  3. Android 第一行代码

    ::-/stuapplication.pla.edu.cn.fragmentbestpractice W/dalvikvm﹕ VFY: unable to find class referenced ...

  4. [WPF系列]-ListBox

    引言 本文就WPF中的ListBox常用项给以实例代码演示,包括隐蔽属性的设置,Style设置,以及ControlTemplate的自定义.   Listbox平滑滚动 <ListBox Ite ...

  5. 简单的词法分析和语法分析(C++实现,CodeBlocks+GCC编译)

    说明: 分析的语言是SNL语言,详见<编译程序的设计与实现>( 刘磊.金英.张晶.张荷花.单郸编著) 词法分析就是实现了词法分析的自动机 语法分析使用递归下降法 运行结果: 词法分析 得到 ...

  6. 俄罗斯方块(Win32实现,Codeblocks+GCC编译)

    缘起: 在玩Codeblocks自带的俄罗斯方块时觉得不错,然而有时间限制.所以想自己再写一个. 程序效果: 主要内容: 程序中有一个board数组,其中有要显示的部分,也有不显示的部分,不显示的部分 ...

  7. Linux 脚本编写基础

    txt去重    http://man.linuxde.net/sort Linux 脚本编写基础 http://www.cnblogs.com/linn/archive/2007/03/05/664 ...

  8. HAOI2015 泛做

    T1 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间的 ...

  9. Linux下部署docker记录(0)-基础环境安装

    以下是centos系统安装docker的操作记录 1)第一种方法:采用系统自带的docker安装,但是这一般都不是最新版的docker安装epel源[root@docker-server ~]# wg ...

  10. Oracle 中的伪列

    昨天做了一个Oracle PL/SQL 相关的测试,其中有一道这样的题目:   下列那些是Oracle的伪列(ACD)  A.ROWID   B.ROW_NUMBER()  C.LEVEL  D.RO ...