private void InitializeClusterCentroid(out List <Centeroid <T> > centroid, int count) { Centeroid <T> c; centroid = new List <Centeroid <T> >(); for (int i = 0; i < count; i++) { c = new Centeroid <T>(); c.GroupedDocument = new List <DocumentVector <T> >(); centroid.Add(c); } }
public List <Centeroid <T> > PrepareDocumentCluster(IList <DocumentVector <T> > documentCollection) { globalCounter = 0; List <Centeroid <T> > centroidCollection = new List <Centeroid <T> >(); Centeroid <T> c; HashSet <int> uniqRand = new HashSet <int>(); GenerateRandomNumber(ref uniqRand, _clustersCount, documentCollection.Count); foreach (int pos in uniqRand) { c = new Centeroid <T>(); c.GroupedDocument = new List <DocumentVector <T> >(); c.GroupedDocument.Add(documentCollection[pos]); centroidCollection.Add(c); } Boolean stoppingCriteria; List <Centeroid <T> > resultSet; List <Centeroid <T> > prevClusterCenter; InitializeClusterCentroid(out resultSet, centroidCollection.Count); do { prevClusterCenter = centroidCollection; foreach (DocumentVector <T> obj in documentCollection) { int index = FindClosestClusterCenter(centroidCollection, obj); resultSet[index].GroupedDocument.Add(obj); } InitializeClusterCentroid(out centroidCollection, centroidCollection.Count()); centroidCollection = CalculateMeanPoints(resultSet); stoppingCriteria = CheckStoppingCriteria(prevClusterCenter, centroidCollection); if (!stoppingCriteria) { //initialize the result set for next iteration InitializeClusterCentroid(out resultSet, centroidCollection.Count); } } while (stoppingCriteria == false); _counter = counter; return(resultSet); }
public List <Centeroid <T> > PrepareDocumentCluster(IList <DocumentVector <T> > documentCollection) { var centroidCollection = new List <Centeroid <T> >(); var uniqRand = new HashSet <int>(); GenerateRandomNumber(ref uniqRand, _clustersCount); foreach (int pos in uniqRand) { var c = new Centeroid <T>(); c.GroupedDocument.Add(documentCollection[pos]); centroidCollection.Add(c); } InitializeClusterCentroid(out List <Centeroid <T> > resultSet, centroidCollection.Count); foreach (DocumentVector <T> obj in documentCollection) { int index = FindClosestClusterCenter(centroidCollection, obj); resultSet[index].GroupedDocument.Add(obj); } return(resultSet); }