Example #1
0
 /// <summary>
 ///     Perform the split.
 /// </summary>
 /// <param name="dataDivisionList">The list of data divisions.</param>
 /// <param name="dataset">The dataset to split.</param>
 /// <param name="inputCount">The input count.</param>
 /// <param name="idealCount">The ideal count.</param>
 public void Perform(IList <DataDivision> dataDivisionList, MatrixMLDataSet dataset,
                     int inputCount, int idealCount)
 {
     GenerateCounts(dataDivisionList, dataset.Data.Length);
     GenerateMasks(dataDivisionList);
     if (_shuffle)
     {
         PerformShuffle(dataDivisionList, dataset.Data.Length);
     }
     CreateDividedDatasets(dataDivisionList, dataset, inputCount, idealCount);
 }
 /// <summary>
 ///     Perform the split.
 /// </summary>
 /// <param name="dataDivisionList">The list of data divisions.</param>
 /// <param name="dataset">The dataset to split.</param>
 /// <param name="inputCount">The input count.</param>
 /// <param name="idealCount">The ideal count.</param>
 public void Perform(IList<DataDivision> dataDivisionList, MatrixMLDataSet dataset,
     int inputCount, int idealCount)
 {
     GenerateCounts(dataDivisionList, dataset.Data.Length);
     GenerateMasks(dataDivisionList);
     if (_shuffle)
     {
         PerformShuffle(dataDivisionList, dataset.Data.Length);
     }
     CreateDividedDatasets(dataDivisionList, dataset, inputCount, idealCount);
 }
Example #3
0
 /// <summary>
 ///     Create the datasets that we will divide into.
 /// </summary>
 /// <param name="dataDivisionList">The list of divisions.</param>
 /// <param name="parentDataset">The data set to divide.</param>
 /// <param name="inputCount">The input count.</param>
 /// <param name="idealCount">The ideal count.</param>
 private void CreateDividedDatasets(IEnumerable <DataDivision> dataDivisionList,
                                    MatrixMLDataSet parentDataset, int inputCount, int idealCount)
 {
     foreach (DataDivision division in dataDivisionList)
     {
         var dataset = new MatrixMLDataSet(parentDataset.Data, inputCount,
                                           idealCount, division.Mask)
         {
             LagWindowSize  = parentDataset.LagWindowSize,
             LeadWindowSize = parentDataset.LeadWindowSize
         };
         division.Dataset = dataset;
     }
 }
Example #4
0
        private void BuildSets(IList <int[]> foldContents)
        {
            _folds.Clear();

            for (int i = 0; i < K; i++)
            {
                // first calculate the size
                int trainingSize   = 0;
                int validationSize = 0;
                for (int j = 0; j < foldContents.Count; j++)
                {
                    int foldSize = foldContents[j].Length;
                    if (j == i)
                    {
                        validationSize += foldSize;
                    }
                    else
                    {
                        trainingSize += foldSize;
                    }
                }
                // create the masks
                var trainingMask   = new int[trainingSize];
                var validationMask = new int[validationSize];
                int trainingIndex  = 0;
                for (int j = 0; j < foldContents.Count; j++)
                {
                    int[] source = foldContents[j];
                    if (j == i)
                    {
                        EngineArray.ArrayCopy(source, 0, validationMask, 0, source.Length);
                    }
                    else
                    {
                        EngineArray.ArrayCopy(source, 0, trainingMask, trainingIndex, source.Length);
                        trainingIndex += source.Length;
                    }
                }
                // Build the set
                var training   = new MatrixMLDataSet(_baseDataset, trainingMask);
                var validation = new MatrixMLDataSet(_baseDataset, validationMask);
                _folds.Add(new DataFold(training, validation));
            }
        }
Example #5
0
 public KFoldCrossvalidation(MatrixMLDataSet theBaseDataset, int theK) : this()
 {
     _baseDataset = theBaseDataset;
     _k           = theK;
 }
 public KFoldCrossvalidation(MatrixMLDataSet theBaseDataset, int theK) : this()
 {
     _baseDataset = theBaseDataset;
     _k = theK;
 }
        private void BuildSets(IList<int[]> foldContents)
        {
            _folds.Clear();

            for (int i = 0; i < K; i++)
            {
                // first calculate the size
                int trainingSize = 0;
                int validationSize = 0;
                for (int j = 0; j < foldContents.Count; j++)
                {
                    int foldSize = foldContents[j].Length;
                    if (j == i)
                    {
                        validationSize += foldSize;
                    }
                    else
                    {
                        trainingSize += foldSize;
                    }
                }
                // create the masks
                var trainingMask = new int[trainingSize];
                var validationMask = new int[validationSize];
                int trainingIndex = 0;
                for (int j = 0; j < foldContents.Count; j++)
                {
                    int[] source = foldContents[j];
                    if (j == i)
                    {
                        EngineArray.ArrayCopy(source, 0, validationMask, 0, source.Length);
                    }
                    else
                    {
                        EngineArray.ArrayCopy(source, 0, trainingMask, trainingIndex, source.Length);
                        trainingIndex += source.Length;
                    }
                }
                // Build the set
                var training = new MatrixMLDataSet(_baseDataset, trainingMask);
                var validation = new MatrixMLDataSet(_baseDataset, validationMask);
                _folds.Add(new DataFold(training, validation));
            }
        }
Example #8
0
 public DataFold(MatrixMLDataSet theTraining, MatrixMLDataSet theValidation)
 {
     _training   = theTraining;
     _validation = theValidation;
 }
 /// <summary>
 ///     Create the datasets that we will divide into.
 /// </summary>
 /// <param name="dataDivisionList">The list of divisions.</param>
 /// <param name="parentDataset">The data set to divide.</param>
 /// <param name="inputCount">The input count.</param>
 /// <param name="idealCount">The ideal count.</param>
 private void CreateDividedDatasets(IEnumerable<DataDivision> dataDivisionList,
     MatrixMLDataSet parentDataset, int inputCount, int idealCount)
 {
     foreach (DataDivision division in dataDivisionList)
     {
         var dataset = new MatrixMLDataSet(parentDataset.Data, inputCount,
             idealCount, division.Mask)
         {
             LagWindowSize = parentDataset.LagWindowSize,
             LeadWindowSize = parentDataset.LeadWindowSize
         };
         division.Dataset = dataset;
     }
 }
 public DataFold(MatrixMLDataSet theTraining, MatrixMLDataSet theValidation)
 {
     _training = theTraining;
     _validation = theValidation;
 }