/// <summary> /// Finds the K nearest instances to a test instance. String based version. /// </summary> /// <param name="test">The test instance.</param> /// <returns>An array of the k-nearest results.</returns> /// <remarks></remarks> public Result[] FindKNearest(InstanceS test) { List <Result> results = new List <Result>(); foreach (InstanceS train in TrainingInstances) { double dist = double.MaxValue; switch (Metric) { case Metric.HammingDistance: dist = train.HammingDistance(test); break; case Metric.WeightedHammingDistance: dist = train.ConfusionWeightedHammingDistance(test); break; default: throw new NotSupportedException(); } results.Add(new Result(train.Class, dist)); } int k = (int)Math.Min(K, TrainingInstances.Count); results.Sort(); Result[] knr = new Result[k]; results.CopyTo(0, knr, 0, k); return(knr); }
private void setupWordClassifier(string wordsPath, string wordProbPath) { Game.ValidWords = new WordDict(wordsPath); WordClassifier = new KNearestClassifier(1, Metric.WeightedHammingDistance, WeightMode.Modal); WordClassifier.TrainingInstances = new List <Instance>(); string[] lines = File.ReadAllLines(wordProbPath); foreach (string line in lines) { string[] word = line.Split(' '); InstanceS x = new InstanceS(word[0]); x.Weight = float.Parse(word[1]); WordClassifier.TrainingInstances.Add(x); } }