public void CreateTestData(string path) { var noOfCategories = ExpectedResults[0].Count; var itemsInCategory = 10; for (int itemToRemove = 0; itemToRemove < itemsInCategory; itemToRemove++) { List <List <double> > expectedResults = new List <List <double> >(); List <List <double> > inputValues = new List <List <double> >(); for (int i = noOfCategories - 1; i >= 0; i--) { var index = i * itemsInCategory + itemToRemove; try { inputValues.Add(InputValues[index]); expectedResults.Add(ExpectedResults[index]); InputValues.RemoveAt(index); ExpectedResults.RemoveAt(index); } catch { } } var trainDataPath = path + "data" + itemToRemove + ".txt"; var trainDataAveragePath = path + "average" + itemToRemove + ".txt"; var testDataPath = path + "test" + itemToRemove + ".txt"; string dataToWrite = noOfCategories.ToString() + Environment.NewLine; for (int i = 0; i < noOfCategories; i++) { var averages = new List <double>(); int averagesNo = 1; averages = InputValues[i * itemsInCategory].ToList(); for (int itemInCategory = 1; itemInCategory < itemsInCategory; itemInCategory++) { var index = i * itemsInCategory + itemInCategory; for (int x = 0; x < InputValues[0].Count; x++) { try { averages[x] += InputValues[index][x]; averagesNo++; } catch { } } } averages = averages.Select(average => average / averagesNo).ToList(); dataToWrite += GetExpectedCategory(ExpectedResults[i * itemsInCategory + 2]) + " " + string.Join(" ", string.Join(" ", averages)) + Environment.NewLine; } File.AppendAllText(trainDataAveragePath, dataToWrite); dataToWrite = noOfCategories.ToString() + Environment.NewLine; for (int itemIndex = 0; itemIndex < InputValues.Count; itemIndex++) { dataToWrite += GetExpectedCategory(ExpectedResults[itemIndex]) + " " + string.Join(" ", InputValues[itemIndex]) + Environment.NewLine; } File.AppendAllText(trainDataPath, dataToWrite); dataToWrite = noOfCategories + Environment.NewLine; for (int itemIndex = 0; itemIndex < inputValues.Count; itemIndex++) { dataToWrite += GetExpectedCategory(expectedResults[itemIndex]) + " " + string.Join(" ", inputValues[itemIndex]) + Environment.NewLine; } File.AppendAllText(testDataPath, dataToWrite); for (int i = 0; i < noOfCategories; i++) { var index = i * itemsInCategory + itemToRemove; try { inputValues.Add(InputValues[index]); expectedResults.Add(ExpectedResults[index]); InputValues.Insert(index, inputValues.Last()); ExpectedResults.Insert(index, expectedResults.Last()); inputValues.RemoveAt(inputValues.Count - 1); expectedResults.RemoveAt(expectedResults.Count - 1); } catch { } } } }