本人有个80*80下三角矩阵,需要聚类分析对词与词进行分类,可是不知道如何编程,望得到帮助。请联系:qq:276919525,Email:
[email protected]。谢谢!
若将n个数据点(x)分成g组,主要有两种聚类方法。
一是系统聚类,先将每一点视为一类,按某种规则计算类间距离(第一步时即为点间距离),然后将最相近的两类合并成一新类,重新(按规则)计算类间距离(只需计算新类与其它类的类间距离,其它类间距离没有发生变化,不必计算),再将最相近的两类合并。如此反复,直至所有点成为一类。这里,计算类间距离的规则有6种,亦即形成了6种基本的系统聚类方法:最近距离法、最远距离法、中间距离法、重心法、类平均法、最小组内平方和法。在matlab中,这可以通过以下几个命令实现:
y=pdist(x,' '),% ' '中为计算空间距离的选项
z=linkage(y,' '),% ' '中为类间距离的选项,对应有,single, complete, median, centroid, average, ward 等。
最后画出聚类树:dendrogram(z), or dendrogram(z,0)
另一类是动态聚类,它在给定初始聚类的基础上,反复修改分类,使分类趋于某种事先设定的标准(目标函数),最终得到一个优化的目标函数,对应于一个优化的分类。在matlab中,仅有组中心距离最短(现改为组中心距离和最小)这一目标函数的kmeans法,这可通过:
kmeans(x,g)
实现。
但这种方法的能力有限,不一定能实现全距最优分类。
若将数据(最好是数据点原始数据,亦即x数据)置上,可以代为聚类,实现各类不同方法优化的动态聚类。
mathjiang
2009-09-29, 19:26
本人有个80*80下三角矩阵,需要聚类分析对词与词进行分类,可是不知道如何编程,望得到帮助。请联系:qq:276919525,Email:
[email protected]。谢谢!
说具体点儿,或许可以提供一些建议。
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.