public static int ChooseCentroid(ref CentroidConfig cc, List<double> point, int fuzzy = 1) { int ans = -1; var pile = cc.C.AsParallel().OrderBy(c => Utilities.VecDiff(c.Vars, point)).Take(fuzzy).ToList(); var r = new Random(); ans = pile[r.Next(0, fuzzy)].Num; return ans; }
public static List<double> CentroidDistances(ref CentroidConfig cc, List<double> point) { var ans = new List<double>(); cc.C.ForEach(v => ans.Add(Utilities.VecDiff(v.Vars, point))); return ans; }
public static CentroidConfig LoadCentroids(string filename) { var CC = new CentroidConfig(0, 0); CC = (CentroidConfig)Utilities.LoadFromXML(@"centroids.xml", typeof(CentroidConfig)); return CC; }