예제 #1
0
        public void Export(TreeGenerative tree, string path)
        {
            FileInfo fi = new FileInfo(path);

            if (fi.Exists)
            {
                fi.Delete();
            }

            _featureNames          = tree.Root.Set.GetFeatureNames();
            _resolutionFeatureName = tree.ResolutionFeatureName;

            using (OfficeOpenXml.ExcelPackage xls = new OfficeOpenXml.ExcelPackage(fi))
            {
                OfficeOpenXml.ExcelWorksheet sheet = xls.Workbook.Worksheets.Add("Classified");
                for (int j = 0; j < _featureNames.Count; j++)
                {
                    sheet.Cells[1, j + 1].Value = _featureNames[j];
                }
                sheet.Cells[1, _featureNames.Count + 1].Value = "Category";
                sheet.Cells[1, _featureNames.Count + 2].Value = string.Format("Delta({0})", _resolutionFeatureName);
                ExportRecursion(tree.Root, sheet);
                xls.Save();
            }

            var exportCompleted = ExportCompleted;

            if (exportCompleted != null)
            {
                exportCompleted(this, fi.Name);
            }
        }
예제 #2
0
        public void Build_ExcelParser_RSS()
        {
            // arrange
            FillItemSet_ExcelParser();
            ISplitter   splitter = new SplitterRss();
            TreeBuilder builder  = new TreeBuilder("Z", 10, new NameGenerator(), splitter);

            // act
            TreeGenerative tree = builder.Build(_set);

            // assert
            Assert.IsNotNull(tree);
            Assert.IsTrue(tree.FeatureNames.Count > 0);
        }
예제 #3
0
        public void Build_Gini()
        {
            // arrange
            FillItemSet_Features4_Items15();
            ISplitter   splitter = new SplitterGini();
            TreeBuilder builder  = new TreeBuilder("F1", 5, new NameGenerator(), splitter);

            // act
            TreeGenerative tree = builder.Build(_set);

            // assert
            Assert.IsNotNull(tree);
            Assert.IsTrue(tree.FeatureNames.Count > 0);
            Assert.AreEqual(4, tree.FeatureNames.Count);
        }
예제 #4
0
        public int GenerateTrees(int count, string resolutionFeatureName, int maxItemCountInCategory, float itemSubsetCountRatio)
        {
            _trees.Clear();
            var nameGenerator = new NameGenerator();

            _treeBulder = new TreeBuilder(resolutionFeatureName, maxItemCountInCategory, nameGenerator, _splitter);
            for (int i = 0; i < count; i++)
            {
                ItemNumericalSet subset = _set.GetRandomSubset(itemSubsetCountRatio, true);
                TreeGenerative   tg     = _treeBulder.Build(subset);
                _trees.Add(tg.ToTree());
                nameGenerator.Reset();
            }
            return(TreeCount());
        }
예제 #5
0
        public void Export_ExportToTxt()
        {
            // arrange
            ISplitter        splitter = new SplitterRss();
            ItemNumericalSet set      = ExcelParser.ParseItemNumericalSet(@"data\test-4x15.xlsx");
            TreeBuilder      builder  = new TreeBuilder("F1", 5, new Lib.NameGenerator(), splitter);
            TreeGenerative   tree     = builder.Build(set);

            tree.ExportStrategy = new ExportToTxt();
            DirectoryInfo di = new DirectoryInfo("temp");

            if (!di.Exists)
            {
                di.Create();
            }

            // act
            tree.Export(@"temp\test-4x15.txt");

            // assert
        }
예제 #6
0
        public void Export_ExportToJson()
        {
            // arrange
            string           name     = "test-2x90-sin";
            ISplitter        splitter = new SplitterRss();
            ItemNumericalSet set      = ExcelParser.ParseItemNumericalSet(string.Format(@"data\{0}.xlsx", name));
            TreeBuilder      builder  = new TreeBuilder("Y", 5, new Lib.NameGenerator(), splitter);
            TreeGenerative   tree     = builder.Build(set);

            tree.ExportStrategy = new ExportToJson();
            DirectoryInfo di = new DirectoryInfo("temp");

            if (!di.Exists)
            {
                di.Create();
            }

            // act
            tree.Export(string.Format(@"temp\{0}.json", name));

            // assert
        }
예제 #7
0
        public void Export(TreeGenerative tree, string path)
        {
            FileInfo fi = new FileInfo(path);

            if (fi.Exists)
            {
                fi.Delete();
            }

            using (StreamWriter sw = new StreamWriter(fi.FullName))
            {
                sw.WriteLine(string.Format("[{0}]", tree.Root.Set.Count()));
                ExportRecursion(sw, tree.Root, 1);
                sw.Close();
            }

            var exportCompleted = ExportCompleted;

            if (exportCompleted != null)
            {
                exportCompleted(this, fi.Name);
            }
        }
예제 #8
0
        public void Export(TreeGenerative tree, string path)
        {
            FileInfo fi = new FileInfo(path);

            if (fi.Exists)
            {
                fi.Delete();
            }

            string json = JsonConvert.SerializeObject(tree.ToTree(), Formatting.Indented);

            using (StreamWriter sw = new StreamWriter(fi.FullName))
            {
                sw.WriteLine(json);
                sw.Close();
            }

            var exportCompleted = ExportCompleted;

            if (exportCompleted != null)
            {
                exportCompleted(this, fi.Name);
            }
        }
예제 #9
0
        public int GenerateTreesTPL(int treeCount, string resolutionFeatureName, int maxItemCountInCategory, float itemSubsetCountRatio)
        {
            _trees.Clear();

            Parallel.For(0, treeCount, (i) =>
            {
                NameGenerator nameGenerator = new NameGenerator();
                ItemNumericalSet subset     = _set.GetRandomSubset(itemSubsetCountRatio, true);
                _treeBulder = new TreeBuilder(resolutionFeatureName, maxItemCountInCategory, nameGenerator, _splitter);
                _treeBulder.BuildComplete += OnTreeBuildComplete;
                TreeGenerative tg          = _treeBulder.Build(subset);
                _treeBulder.BuildComplete -= OnTreeBuildComplete;
                _trees.Add(tg.ToTree());
            });

            var forestGrowComplete = ForestGrowComplete;

            if (forestGrowComplete != null)
            {
                forestGrowComplete(this, EventArgs.Empty);
            }

            return(TreeCount());
        }