示例#1
0
        public void TestSaveAndLoadKNNModel()
        {
            TestTrainValidData(); //Sets up a KNN with data
            string modelFileName = "KNNModel.txt";

            KnnModel.Save(new StreamWriter(modelFileName).BaseStream);
            List <Dictionary <object, int> > labelMappingDict = KnnModel.CopyLabelMappingDictionary();
            List <KNNDataPoint> dataPoints = KnnModel.CopyDataPoints();

            KnnModel = new KNN();
            KnnModel.Load(new StreamReader(modelFileName).BaseStream);
            List <KNNDataPoint> loadedDataPoints = KnnModel.CopyDataPoints();
            var loadedMappingDicts = KnnModel.CopyLabelMappingDictionary();

            for (int i = 0; i < dataPoints.Count; i++)
            {
                Assert.IsTrue(dataPoints[i].Equals(loadedDataPoints[i]));
            }
            for (int i = 0; i < labelMappingDict.Count; i++)
            {
                var savedMappingDict  = labelMappingDict[i];
                var loadedMappingDict = loadedMappingDicts[i];
                foreach (object key in savedMappingDict.Keys)
                {
                    Assert.IsTrue(savedMappingDict[key].Equals(loadedMappingDict[key]));
                }
            }
            File.Delete(modelFileName);
        }