示例#1
0
        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 { }
                }
            }
        }