Exemplo n.º 1
0
 private Set <int> ComputeCentroid(Cluster cluster)
 {
     if (cluster.Children.Count == 0)
     {
         ClusterInfo clusterInfo = new ClusterInfo();
         clusterInfo.Centroid = ModelUtils.ComputeCentroid(cluster.Items, mDataset, CentroidType.Sum);
         mModel.Add(cluster, clusterInfo);
         return(cluster.Items);
     }
     else
     {
         Set <int> items = new Set <int>();
         foreach (Cluster child in cluster.Children)
         {
             items.AddRange(ComputeCentroid(child));
         }
         if (mRemoveDuplicates)
         {
             items = Set <int> .Difference(cluster.Items, items);
         }
         ClusterInfo clusterInfo = new ClusterInfo();
         clusterInfo.Centroid = ModelUtils.ComputeCentroid(items, mDataset, CentroidType.Sum);
         mModel.Add(cluster, clusterInfo);
         return(items);
     }
 }
Exemplo n.º 2
0
 public void ComputeFeatures()
 {
     foreach (Text text in mTexts)
     {
         text.ComputeFeatures();
         foreach (KeyValuePair <string, double> feature in text.mFeatures)
         {
             AddFeatureVal(feature.Key, feature.Value);
         }
     }
     foreach (string fvName in mTexts[0].mFeatureVectors.Keys)
     {
         ArrayList <SparseVector <double> > tmp = new ArrayList <SparseVector <double> >();
         foreach (Text text in mTexts)
         {
             tmp.Add(text.mFeatureVectors[fvName]);
         }
         mFeatureVectors.Add(fvName, ModelUtils.ComputeCentroid(tmp, CentroidType.NrmL2));
     }
 }