コード例 #1
0
        /// <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);
        }
コード例 #2
0
ファイル: Controller.cs プロジェクト: skalinets/kwyjibo
        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);
            }
        }