private CentroidVector transform2CentroidVector(DocumentVector documentVector) { CentroidVector centroid = new CentroidVector(); foreach (double weight in documentVector.getWeightVector()) { centroid.addWeight(weight); } return(centroid); }
private CentroidVector getClosestCentroid(List <CentroidVector> centroids, DocumentVector documentVector) { double minDistance = Double.MaxValue; CentroidVector minCentroidVector = null; foreach (CentroidVector centroid in centroids) { double currentDistance = cosSimilarity(documentVector, centroid); if (minDistance > currentDistance) { minDistance = currentDistance; minCentroidVector = centroid; } } return(minCentroidVector); }
private void fillClusters(List <DocumentVector> vectors, List <CentroidVector> centroids) { foreach (DocumentVector documentVector in vectors) { double minDistance = Double.MaxValue; CentroidVector minDistanceCentroid = null; // TODO foreach (CentroidVector centroidVector in centroids) { double currentDistance = cosSimilarity(documentVector, centroidVector); if (currentDistance < minDistance) { minDistance = currentDistance; minDistanceCentroid = centroidVector; } } minDistanceCentroid.addVector(documentVector); } }
private List <CentroidVector> randomCentroidVectorList2(List <DocumentVector> vectors) { List <CentroidVector> centroids = new List <CentroidVector>(); Random randomSeed = new Random(1); for (int index = 0; index < k; index++) { int randomIndex = randomSeed.Next(vectors.Count); DocumentVector documentVector = vectors[randomIndex]; CentroidVector centroid = new CentroidVector(); foreach (double weight in documentVector.getWeightVector()) { centroid.addWeight(weight); } centroids.Add(centroid); } return(centroids); }
private List <CentroidVector> randomCentroidVectorList(List <DocumentVector> vectors) { if (vectors.Count < k) { Console.WriteLine("Sorry, no more vector to random."); return(null); } List <CentroidVector> centroids = new List <CentroidVector>(); List <int> indexs = CommonUtils.randomSetByFloyd(0, vectors.Count, k); foreach (int index in indexs) { DocumentVector documentVector = vectors[index]; CentroidVector centroid = new CentroidVector(); foreach (double weight in documentVector.getWeightVector()) { centroid.addWeight(weight); } centroids.Add(centroid); } return(centroids); }