public override void Classify(FeatureVectorList featureVectors)
        {
            base.Classify(featureVectors);

            if (Model.IncidentTypes.Count != 1)
            {
                throw new Exception("SvmRank cannot be used for multi-incident predictions. Select a single incident type.");
            }

            string incident = Model.IncidentTypes.First();

            _svmRank.Classify(featureVectors);

            int maxRank = featureVectors.Max(vector => int.Parse(vector.DerivedFrom.PredictionConfidenceScores.Keys.First())) + 1;

            foreach (FeatureVector vector in featureVectors)
            {
                int   rank  = int.Parse(vector.DerivedFrom.PredictionConfidenceScores.Keys.First()) + 1;
                float score = (maxRank - rank) / (float)maxRank;
                vector.DerivedFrom.PredictionConfidenceScores.Clear();
                vector.DerivedFrom.PredictionConfidenceScores.Add(incident, score);
            }
        }
        public override void Classify(FeatureVectorList featureVectors)
        {
            base.Classify(featureVectors);

            if (Model.IncidentTypes.Count != 1)
                throw new Exception("SvmRank cannot be used for multi-incident predictions. Select a single incident type.");

            string incident = Model.IncidentTypes.First();

            _svmRank.Classify(featureVectors);

            int maxRank = featureVectors.Max(vector => int.Parse(vector.DerivedFrom.PredictionConfidenceScores.Keys.First())) + 1;

            foreach (FeatureVector vector in featureVectors)
            {
                int rank = int.Parse(vector.DerivedFrom.PredictionConfidenceScores.Keys.First()) + 1;
                float score = (maxRank - rank) / (float)maxRank;
                vector.DerivedFrom.PredictionConfidenceScores.Clear();
                vector.DerivedFrom.PredictionConfidenceScores.Add(incident, score);
            }
        }