public IEnumerable <AssociationRule <ChessGame> > Mine(Double relativeMinsup, Double minconf, IEnumerable <IFact <ChessGame> > projectionFacts = null, IEnumerable <IFact <ChessGame> > targetFacts = null) { //Fact Generators var openingFactsGenerator = new OpeningsFactsGenerator(); var simpleFactsGenerator = new SimpleFactsGenerator(); var timeControlFactsGenerator = new TimeControlFactsGenerator(new TimeControlCategoriser()); var takesFirstFactGenerator = new TakesFirstFactGenerator(); var candidateGenerator = new SelfJoinAndPruneGenerator <ChessGame>(); var factGenerators = new List <IFactsGenerator <ChessGame> >() { simpleFactsGenerator, openingFactsGenerator, timeControlFactsGenerator, takesFirstFactGenerator }; var apriori = new Apriori <ChessGame>(candidateGenerator, factGenerators); var filterer = new ThresholdFilterer <ChessGame>(); var candidateRuleGenerator = new CandidateRuleGenerator <ChessGame>(); var database = new Database <ChessGame>(games.ToList()); var ruleGenerator = new AssociationRuleGenerator <ChessGame>(database, apriori, candidateRuleGenerator, filterer); return(ruleGenerator.Generate(relativeMinsup, minconf, projectionFacts, targetFacts)); }
static void Main(string[] args) { List <ChessGame> result; var serializer = new JsonSerializer(); using (var re = File.OpenText("rated.json")) using (var reader = new JsonTextReader(re)) { result = serializer.Deserialize <List <ChessGame> >(reader); } var database = new Database <ChessGame>(result); var projectedFact1 = new OpeningFact("Gambit"); //var projectedFact2 = new SimpleFact("White", "tailuge"); var projectedFacts = new List <IFact <ChessGame> >() { projectedFact1 }; var targetFact = new SimpleFact("Result", "1-0"); var targetFacts = new List <IFact <ChessGame> >() { targetFact }; //Fact Generators var openingFactsGenerator = new OpeningsFactsGenerator(); var simpleFactsGenerator = new SimpleFactsGenerator(); var timeControlFactsGenerator = new TimeControlFactsGenerator(new TimeControlCategoriser()); var takesFirstFactGenerator = new TakesFirstFactGenerator(); var candidateGenerator = new SelfJoinAndPruneGenerator <ChessGame>(); var factGenerators = new List <IFactsGenerator <ChessGame> >() { simpleFactsGenerator, openingFactsGenerator, timeControlFactsGenerator, takesFirstFactGenerator }; var apriori = new Apriori <ChessGame>(candidateGenerator, factGenerators); var filterer = new ThresholdFilterer <ChessGame>(); var candidateRuleGenerator = new CandidateRuleGenerator <ChessGame>(); var ruleGenerator = new AssociationRuleGenerator <ChessGame>(database, apriori, candidateRuleGenerator, filterer); //When var minsup = 0.01; var minconf = 0.1; var rules = ruleGenerator.Generate(minsup, minconf, projectedFacts, targetFacts); var i = 1; using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\tferguson\Documents\Visual Studio 2013\Projects\PatternDiscoveryInDataMining\Week1\chessAssociationRules.txt")) { file.WriteLine("Minsup: " + minsup + ", " + "Minconf: " + minconf); file.WriteLine("For games where " + projectedFacts[0] + ", "); file.WriteLine("there are " + rules.Count + " strong association rules \n"); foreach (var rule in rules) { file.Write(i + ". "); file.WriteLine(rule); i++; } } System.Console.WriteLine("Done!"); System.Console.ReadLine(); }