Fuzzykmeans集群算法(cluster-reuters)

来源:互联网 发布:java局域网循环聊天 编辑:程序博客网 时间:2024/05/18 21:47



原创文章,转载请注明: 转载自慢慢的回味

本文链接地址: Fuzzykmeans集群算法(cluster-reuters)

理论分析

集群中心点计算

1 随机从待分类的向量中选出20个作为20个集群的中心。
2 对所有的点,计算其和每个中心的距离,得到点归属于每个集群的概率
3 重新对每个集群计算新的中心,并计算新的中心和老的中心的距离,判断其是否收敛。
4 如果所有集群都收敛或者达到用户指定的条件,则集群完成。否则,从2开始下一轮计算。

集群数据

对所有的点,计算其和每个中心的距离,得到点归属于每个集群的概率

代码分析

请先阅读kmeans集群算法(cluster-reuters)
这里只说明FuzzyKMeansClusteringPolicy和KMeansClusteringPolicy的不同地方

  /* FuzzyKMeansClusteringPolicy.java中的方法*/  /* 相对于KMeansClusteringPolicy,KMeansClusteringPolicy只返回最大概率者,而本方法是全部返回。*/  @Override  public Vector select(Vector probabilities) {    return probabilities;  }   /* 此方法计算当前点属于所以集群中心的概率*/  @Override  public Vector classify(Vector data, ClusterClassifier prior) {    Collection<SoftCluster> clusters = Lists.newArrayList();    List<Double> distances = Lists.newArrayList();    for (Cluster model : prior.getModels()) {      SoftCluster sc = (SoftCluster) model;      clusters.add(sc);      distances.add(sc.getMeasure().distance(data, sc.getCenter()));    }    FuzzyKMeansClusterer fuzzyKMeansClusterer = new FuzzyKMeansClusterer();    fuzzyKMeansClusterer.setM(m);    return fuzzyKMeansClusterer.computePi(clusters, distances);  }
0 0
原创粉丝点击