예제 #1
0
 protected override void Analyze(Input input)
 {
 }
예제 #2
0
 protected override double Predict(Input item)
 {
     return 0;
 }
예제 #3
0
        /// <summary>
        /// Converts samples and labels to "TrainingSet" instances.
        /// If required, applies feature scaling and mean normalization.
        /// </summary>
        internal void Run(IEnumerable samples, IEnumerable labels, InputSplitRatio splitRatio)
        {
            int samplesCount;
            _features = GetFeatures(samples, labels, out samplesCount);

            var samplesMatrix = GetSamplesMatrix(samples, samplesCount, out _mean, out _deviation);
            var labelsVector = GetLabelsVector(labels, samplesCount);

            if (_scaleAndNormalize) {
                int sample = 0;
                while (sample < samplesCount) {
                    for (int feature = 0; feature < _features.Length; feature++) {
                        samplesMatrix[sample, feature] = (samplesMatrix[sample, feature] - _mean[feature]) / _deviation[feature];
                    }
                    sample++;
                }
            }

            switch (splitRatio) {
                case InputSplitRatio.No:
                    TrainingSet = new Input(samplesMatrix, labelsVector, 0, samplesCount);
                    break;
                case InputSplitRatio.Default:
                    var trainingSetSize = (int) Math.Ceiling(((double) 2/3)*samplesCount);
                    var crossValidationTestSize = (int)Math.Ceiling(((double)1 / 3) * samplesCount / 2);
                    var testSetSize = samplesCount - (trainingSetSize + crossValidationTestSize);

                    TrainingSet = new Input(samplesMatrix, labelsVector, 0, trainingSetSize);
                    CrossValidationSet = new Input(samplesMatrix, labelsVector, trainingSetSize, crossValidationTestSize);
                    TestSet = new Input(samplesMatrix, labelsVector, (trainingSetSize + crossValidationTestSize), testSetSize);
                    break;
                default:
                    throw new NMachineException("Unexpected split type: " + splitRatio);
            }
        }