当前位置: 首页 > 工具软件 > LingPipe > 使用案例 >

lingPipe重要方法解析

劳豪
2023-12-01
进行k-均值聚类
     1. 首先初始化一个聚类对象
KMeansClustererLabel<String> clusterer
            =   new   KMeansClustererLabel<String>(   FEATURE_EXTRACTOR ,
                                  numClusters,
                                  maxIterations,
                                    false ,0.0)     
   2.调用对象的聚类方法:
public Set<Set<E>> cluster(Set<? extends E> elementSet,
                               Random random,
                               Reporter reporter)
          在这个聚类方法中:
      (1). 首先通过toVectors方法
MapSymbolTable symTab
            = toVectors(elements,featuress,valss,eltSqLengths);   //初始化 featuressvalss eltSqLengths
      (2). 然后通过 kmeansPlusPlusInit初始化  closestCenters, centroidss,
             kmeansPlusPlusInit(featuress,valss,eltSqLengths,
                               closestCenters,
                               centroidss,
                               random);
     (3). 最后调用kMeansEpochs进行迭代
kMeansEpochs(elements,eltSqLengths,
                            centroidss,
                            featuress,valss,
                            sqDistToCenters,closestCenters,
                            mMaxEpochs,reporter);
             在kMeansEpochs方法中
             1).在每次迭代中将 changedClusters分成两部分,通过 numChangedClusters开划分,前半部分是变化的类,后半部分是不在变化的类
             2).在每次迭代中,遍历所有的样本,找出这个样本距离最近的类心,距这个类心的距离,确定这个样本所属的类。
             3).初始化 scoreMapList,根据样本所属类
scoreMapList.get(closestCenters[i]).set(elements[i],  
     sqDistToCenters[i] == 0.0  ? -Double. MIN_VALUE : -sqDistToCenters [i] 
     );
             4).给类内的成员进行排序并对类进行打分
 Set<E> cluster
                =   new   LinkedHashSet<E>(clusterDistances.keysOrderedByValueList()); //得到该团中所有的key,其结果是按value的大小进行排序
            clusterScores.set(cluster,      //不同的团的样本放在不同的团中
                              totalScores[k] == 0.0   //如何这个团的分为 0.0,则将value设为负无穷大,否则为团的总分/团的大小
                              ? -Double.   MIN_VALUE
                              : totalScores[k]/cluster.size());
             5).按照各类的分值对最终结果中的类进行排序
Set<Set<E>> result = new LinkedHashSet<Set<E>>(clusterScores.keysOrderedByValueList()); //得到全部的团key,并按团的value(总分)进行排序
 类似资料: