public void ClassifierTest1()
{
// example from http://www3.cs.stonybrook.edu/~cse634/lecture_notes/07apriori.pdf
string[][] dataset =
{
new string[] { "1", "2", "5" },
new string[] { "2", "4" },
new string[] { "2", "3" },
new string[] { "1", "2", "4" },
new string[] { "1", "3" },
new string[] { "2", "3" },
new string[] { "1", "3" },
new string[] { "1", "2", "3", "5" },
new string[] { "1", "2", "3" },
};
var apriori = new Apriori<string>(threshold: 2, confidence: 0.7);
var classifier = apriori.Learn(dataset);
var rules = classifier.Rules;
Assert.AreEqual(6, rules.Length);
Assert.AreEqual(rules[0].ToString(), "[5] -> [1]; support: 2, confidence: 1");
Assert.AreEqual(rules[1].ToString(), "[5] -> [2]; support: 2, confidence: 1");
Assert.AreEqual(rules[2].ToString(), "[4] -> [2]; support: 2, confidence: 1");
Assert.AreEqual(rules[3].ToString(), "[5] -> [1 2]; support: 2, confidence: 1");
Assert.AreEqual(rules[4].ToString(), "[1 5] -> [2]; support: 2, confidence: 1");
Assert.AreEqual(rules[5].ToString(), "[2 5] -> [1]; support: 2, confidence: 1");
string[][] actual;
actual = classifier.Decide(new string[] { "1", "5" });
Assert.AreEqual("1", actual[0][0]);
Assert.AreEqual("2", actual[1][0]);
Assert.AreEqual("1", actual[2][0]);
Assert.AreEqual("2", actual[2][1]);
Assert.AreEqual("2", actual[3][0]);
actual = classifier.Decide(new string[] { "2", "5" });
Assert.AreEqual("1", actual[0][0]);
Assert.AreEqual("2", actual[1][0]);
Assert.AreEqual("1", actual[2][0]);
Assert.AreEqual("2", actual[2][1]);
Assert.AreEqual("1", actual[3][0]);
actual = classifier.Decide(new string[] { "0", "5" });
Assert.AreEqual("1", actual[0][0]);
Assert.AreEqual("2", actual[1][0]);
Assert.AreEqual("1", actual[2][0]);
Assert.AreEqual("2", actual[2][1]);
}
}