public void PredictWinner_NotTrained_ReturnUnknownClass()
        {
            // Given
            var testPattern = new SparsePattern(new Dictionary<int, float> { { 1, 1.0f }, { 2, 0.85f } }, 1);

            // When
            var winningClass = m_classifier.PredictWinner(testPattern);

            // Then
            Assert.That(winningClass, Is.EqualTo(UnknownClassID));
        }
        public void PredictWinner_ClassTwoWins()
        {
            // Given
            const int classOne = 1;
            const int classTwo = 2;
            var patterns = new[]
                               {
                                   new SparsePattern(new Dictionary<int, float> {{1,1.0f}, {2,1.0f} }, classOne),
                                   new SparsePattern(new Dictionary<int, float> {{3,1.0f}, {4,1.0f}}, classTwo)
                               };
            var testPattern = new SparsePattern(new Dictionary<int, float> { {3, 2.0f }, {4, 4.0f } }, classTwo);

            // When
            m_classifier.Train(patterns);
            var winningClass = m_classifier.PredictWinner(testPattern);

            // Then
            Assert.That(winningClass, Is.EqualTo(classTwo));
        }
        public void Write(SparsePattern sparsePattern)
        {
            if(sparsePattern.Explain == null) return;

            if (!HeaderWritten)
            {
                foreach (var explanation in sparsePattern.Explain)
                {
                    m_streamWriter.WriteLine("classes({0}).name = '{1}';", explanation.Key, explanation.Value);
                }
                HeaderWritten = true;
            }

            var features = new float[m_maxFeatureId + 1];
            features[0] = sparsePattern.Label;
            for (var featId = 0; featId < m_maxFeatureId; featId++)
            {
                features[featId + 1] = sparsePattern.Features[featId + 1];
            }

            var featuresAsString = (from f in features select f.ToString(m_formatProvider)).ToArray();

            m_streamWriter.WriteLine("pattern({0},:) = [{1}];", ++m_patternId, string.Join(",", featuresAsString));
        }