コード例 #1
0
        public void WriteResult(GRMResult result, string outputFilePath)
        {
            using (var fileStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write))
                using (var writer = new StreamWriter(fileStream))
                {
                    var stringBuilder = new StringBuilder();

                    foreach (var rule in result.Rules)
                    {
                        stringBuilder.AppendLine(SEPARATOR);

                        stringBuilder.AppendLine(string.Format("{0}: '{1}':", GetDecisionAttributeName(result.DecisionAttributeIndex, result.AttributeNames), rule.Decision));

                        stringBuilder.AppendLine(SUBSEPARATOR);

                        foreach (var generator in rule.Generators)
                        {
                            stringBuilder.AppendLine(FormatGenerator(generator, result.AttributeNames));
                        }

                        stringBuilder.AppendLine();
                    }

                    writer.Write(stringBuilder.ToString());
                }
        }
コード例 #2
0
        protected override void AssertResult(GRMResult result)
        {
            Assert.Equal(1, result.Rules.Count());

            Assert.True(result.Rules.Any(x => x.Decision == "+"));
            var unaccRule = result.Rules.Single(x => x.Decision == "+");

            Assert.Equal(2, unaccRule.Generators.Count);

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 0, Value = "a"
            },
                                    new Item {
                AttributeID = 1, Value = "b"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 1, Value = "b"
            },
                                    new Item {
                AttributeID = 3, Value = "d"
            });
        }
コード例 #3
0
        private string FormatHeaders(GRMResult result)
        {
            var headers = new List <string>();

            for (int i = 0; i < result.AttributesCount; i++)
            {
                if (i == result.DecisionAttributeIndex)
                {
                    continue;
                }

                if (result.AttributeNames != null)
                {
                    headers.Add(result.AttributeNames[i]);
                }
                else
                {
                    headers.Add(string.Format("Attribute {0}", i + 1));
                }
            }

            if (result.AttributeNames != null)
            {
                headers.Add(result.AttributeNames[result.DecisionAttributeIndex]);
            }
            else
            {
                headers.Add("Decision");
            }

            return(string.Join(SEPARATOR, headers.ToArray()));
        }
コード例 #4
0
        private static void WriteGRMResult(GRMResult result, string outputPath)
        {
            var textOutputFilePath = outputPath + "_rules.txt";

            new TextResultWriter().WriteResult(result, textOutputFilePath);
            Console.WriteLine("Text result saved to {0}", textOutputFilePath);

            var csvOutputFilePath = outputPath + "_rules.csv";

            new CSVResultWriter().WriteResult(result, csvOutputFilePath);
            Console.WriteLine("CSV result saved to {0}", csvOutputFilePath);
        }
コード例 #5
0
        public void WriteResult(GRMResult result, string outputFilePath)
        {
            using (var fileStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write))
                using (var writer = new StreamWriter(fileStream))
                {
                    var stringBuilder = new StringBuilder();

                    stringBuilder.AppendLine(FormatHeaders(result));

                    foreach (var rule in result.Rules)
                    {
                        foreach (var generator in rule.Generators)
                        {
                            stringBuilder.AppendLine(FormatGenerator(generator, result.AttributesCount, result.DecisionAttributeIndex, rule.Decision));
                        }
                    }

                    writer.Write(stringBuilder.ToString());
                }
        }
コード例 #6
0
        protected override void AssertResult(GRMResult result)
        {
            var taskInfo = ProgressTrackerContainer.CurrentProgressTracker.GetInfo();

            Console.WriteLine("Execution lasted: {0}", taskInfo.Duration);
        }
コード例 #7
0
 protected abstract void AssertResult(GRMResult result);
コード例 #8
0
        protected override void AssertResult(GRMResult result)
        {
            Assert.Equal(2, result.Rules.Count());

            // Assert rule for unacc
            Assert.True(result.Rules.Any(x => x.Decision == "unacc"));
            var unaccRule = result.Rules.Single(x => x.Decision == "unacc");

            Assert.Equal(13, unaccRule.Generators.Count);

            AssertGeneratorIsInRule(unaccRule, new Item {
                AttributeID = 3, Value = "2"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 0, Value = "vhigh"
            },
                                    new Item {
                AttributeID = 4, Value = "small"
            },
                                    new Item {
                AttributeID = 5, Value = "med"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 1, Value = "vhigh"
            },
                                    new Item {
                AttributeID = 4, Value = "small"
            },
                                    new Item {
                AttributeID = 5, Value = "med"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 0, Value = "med"
            },
                                    new Item {
                AttributeID = 1, Value = "high"
            },
                                    new Item {
                AttributeID = 4, Value = "small"
            },
                                    new Item {
                AttributeID = 5, Value = "med"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 0, Value = "high"
            },
                                    new Item {
                AttributeID = 4, Value = "small"
            },
                                    new Item {
                AttributeID = 5, Value = "med"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 2, Value = "2"
            },
                                    new Item {
                AttributeID = 3, Value = "more"
            },
                                    new Item {
                AttributeID = 4, Value = "small"
            });

            AssertGeneratorIsInRule(unaccRule, new Item {
                AttributeID = 5, Value = "low"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 0, Value = "vhigh"
            },
                                    new Item {
                AttributeID = 2, Value = "2"
            },
                                    new Item {
                AttributeID = 4, Value = "med"
            },
                                    new Item {
                AttributeID = 5, Value = "med"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 1, Value = "vhigh"
            },
                                    new Item {
                AttributeID = 2, Value = "2"
            },
                                    new Item {
                AttributeID = 4, Value = "med"
            },
                                    new Item {
                AttributeID = 5, Value = "med"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 0, Value = "high"
            },
                                    new Item {
                AttributeID = 2, Value = "2"
            },
                                    new Item {
                AttributeID = 4, Value = "med"
            },
                                    new Item {
                AttributeID = 5, Value = "med"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 0, Value = "vhigh"
            },
                                    new Item {
                AttributeID = 1, Value = "vhigh"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 0, Value = "vhigh"
            },
                                    new Item {
                AttributeID = 1, Value = "high"
            });

            AssertGeneratorIsInRule(unaccRule,
                                    new Item {
                AttributeID = 0, Value = "high"
            },
                                    new Item {
                AttributeID = 1, Value = "vhigh"
            });

            // Assert rule for acc
            Assert.True(result.Rules.Any(x => x.Decision == "acc"));
            var accRule = result.Rules.Single(x => x.Decision == "acc");

            Assert.Equal(10, accRule.Generators.Count);

            AssertGeneratorIsInRule(accRule,
                                    new Item {
                AttributeID = 0, Value = "low"
            },
                                    new Item {
                AttributeID = 1, Value = "high"
            },
                                    new Item {
                AttributeID = 3, Value = "4"
            },
                                    new Item {
                AttributeID = 5, Value = "med"
            });

            AssertGeneratorIsInRule(accRule,
                                    new Item {
                AttributeID = 0, Value = "med"
            },
                                    new Item {
                AttributeID = 1, Value = "med"
            },
                                    new Item {
                AttributeID = 3, Value = "4"
            },
                                    new Item {
                AttributeID = 5, Value = "med"
            });

            AssertGeneratorIsInRule(accRule,
                                    new Item {
                AttributeID = 0, Value = "vhigh"
            },
                                    new Item {
                AttributeID = 1, Value = "med"
            },
                                    new Item {
                AttributeID = 3, Value = "4"
            },
                                    new Item {
                AttributeID = 5, Value = "high"
            });

            AssertGeneratorIsInRule(accRule,
                                    new Item {
                AttributeID = 0, Value = "vhigh"
            },
                                    new Item {
                AttributeID = 1, Value = "low"
            },
                                    new Item {
                AttributeID = 3, Value = "4"
            },
                                    new Item {
                AttributeID = 5, Value = "high"
            });

            AssertGeneratorIsInRule(accRule,
                                    new Item {
                AttributeID = 0, Value = "med"
            },
                                    new Item {
                AttributeID = 1, Value = "vhigh"
            },
                                    new Item {
                AttributeID = 3, Value = "4"
            },
                                    new Item {
                AttributeID = 5, Value = "high"
            });

            AssertGeneratorIsInRule(accRule,
                                    new Item {
                AttributeID = 0, Value = "low"
            },
                                    new Item {
                AttributeID = 1, Value = "vhigh"
            },
                                    new Item {
                AttributeID = 3, Value = "4"
            },
                                    new Item {
                AttributeID = 5, Value = "high"
            });

            AssertGeneratorIsInRule(accRule,
                                    new Item {
                AttributeID = 0, Value = "high"
            },
                                    new Item {
                AttributeID = 1, Value = "high"
            },
                                    new Item {
                AttributeID = 3, Value = "4"
            },
                                    new Item {
                AttributeID = 5, Value = "high"
            });

            AssertGeneratorIsInRule(accRule,
                                    new Item {
                AttributeID = 0, Value = "med"
            },
                                    new Item {
                AttributeID = 1, Value = "high"
            },
                                    new Item {
                AttributeID = 3, Value = "4"
            },
                                    new Item {
                AttributeID = 5, Value = "high"
            });

            AssertGeneratorIsInRule(accRule,
                                    new Item {
                AttributeID = 0, Value = "high"
            },
                                    new Item {
                AttributeID = 1, Value = "med"
            },
                                    new Item {
                AttributeID = 3, Value = "4"
            },
                                    new Item {
                AttributeID = 5, Value = "high"
            });

            AssertGeneratorIsInRule(accRule,
                                    new Item {
                AttributeID = 0, Value = "high"
            },
                                    new Item {
                AttributeID = 1, Value = "low"
            },
                                    new Item {
                AttributeID = 3, Value = "4"
            },
                                    new Item {
                AttributeID = 5, Value = "high"
            });
        }