public IEnumerable <BasicDataset> Predict(IEnumerable <BasicDataset> datasets) { SplitSet(datasets, out IEnumerable <BasicDataset> trainingSet, out IEnumerable <BasicDataset> controlSet); int totalCount = datasets.Count(), trainingCount = trainingSet.Count(), controlCount = controlSet.Count(); //read data DataTable mscTable = DataTableConverter.ConvertToDateTable(datasets); DateTableHandler dateTableHandler = new DateTableHandler(); mscTable = dateTableHandler.SortTable(mscTable, "Date ASC"); IEnumerable <DateTime> dates = mscTable.Columns["Date"].ToArray <DateTime>(); IEnumerable <DatePart> dateparts = DatePart.CreateFromDates(dates); //select the target column double[] outResPositive = mscTable.Columns["Close"].ToArray(); DateTime[] allDates = mscTable.Columns["Date"].ToArray <DateTime>(), predictedDates = new DateTime[controlCount]; for (int i = 0; i < predictedDates.Length; ++i) { predictedDates[i] = allDates[trainingCount + i]; } // separation of the test and train target sample double[] outResPositiveTrain = outResPositive.Get(0, trainingCount); double[] outResPositiveTest = outResPositive.Get(trainingCount, totalCount); dateTableHandler.RemoveColumnRange(mscTable, new string[] { "Close", "Date", "Open", "High", "Low", "Last", "Total Trade Quantity", "Turnover (Lacs)" } ); var columnsToAdd = CreateNewColumnList(); dateTableHandler.AddColumnRange(mscTable, columnsToAdd); dateTableHandler.FillColumnRange(mscTable, columnsToAdd, dateparts); //receiving input data from a table double[][] inputs = mscTable.ToJagged(System.Globalization.CultureInfo.InvariantCulture); //separation of the test and train sample double[][] inputsTrain = inputs.Get(0, trainingCount), inputsPredict = inputs.Get(trainingCount, totalCount); int[] trainClasses = AssignClasses(outResPositiveTrain, out Dictionary <int, int> valueToClassDictionary); int[] predictedClasses = Predict(inputsTrain, trainClasses, inputsPredict); double[] predictedValues = GetValuesFromClasses(predictedClasses, valueToClassDictionary); return(ConvertToDatasetRange(predictedDates, predictedValues)); }