private void setupEscenario4() { asso = new AssociationAnalyzerApriori(6, 0.3, 0, 3); asso.binaryTransactions = new List <BigInteger> { 39, 60, 8, 56, 56, 56, 35, 42, 51, 27, 54, 63, 1, 32 }; asso.totalNumberOfTransactions = asso.binaryTransactions.Count; }
private void setupEscenario1() { asso = new AssociationAnalyzerApriori(3, 0, 0.35, 0); asso.binaryTransactions = new List <BigInteger> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; asso.totalNumberOfTransactions = asso.binaryTransactions.Count; asso.itemSetToSupport.Add(5, 2); asso.itemSetToSupport.Add(4, 5); asso.itemSetToSupport.Add(1, 6); }
private void setupEscenario3() { asso = new AssociationAnalyzerApriori(4, 0.5, 0, 3); asso.mapFromBinaryPositionToItem = new Dictionary <int, Item>(); asso.mapFromBinaryPositionToItem.Add(0, new Item("120", "Alcohol")); asso.mapFromBinaryPositionToItem.Add(1, new Item("130", "Manzana")); asso.mapFromBinaryPositionToItem.Add(2, new Item("200", "Pera")); asso.mapFromBinaryPositionToItem.Add(3, new Item("300", "Papa")); asso.binaryTransactions = new List <BigInteger> { 3, 12, 6, 1, 8, 15, 12, 14, 9, 14 }; asso.totalNumberOfTransactions = asso.binaryTransactions.Count; }
private void setupEscenario5() { asso = new AssociationAnalyzerApriori(4, 0, 0.35, 3); asso.binaryTransactions = new List <BigInteger>(); for (int i = 0; i < 100; i++) { asso.binaryTransactions.Add(i + 1); } asso.totalNumberOfTransactions = asso.binaryTransactions.Count; asso.itemSetToSupport.Add(8, 70); asso.itemSetToSupport.Add(12, 50); asso.itemSetToSupport.Add(4, 80); asso.itemSetToSupport.Add(9, 55); asso.itemSetToSupport.Add(2, 83); asso.itemSetToSupport.Add(14, 30); asso.itemSetToSupport.Add(1, 91); asso.itemSetToSupport.Add(11, 10); asso.itemSetToSupport.Add(10, 58); asso.itemSetToSupport.Add(6, 66); asso.itemSetToSupport.Add(3, 60); }
public List <Prediction> GetPredictionsOfCustomer(String customerId, double minSup, double minConfidence) { DataManager cusData = GetDataBy(customerId); AssociationAnalyzerApriori apriori = new AssociationAnalyzerApriori(cusData, 10, minSup, minConfidence, 10); List <List <BigInteger> > sets = apriori.GenerateFrequentItemSetsApriori(); if (sets.Count == 0) { throw new Exception("Insuficientes items frecuentes, disminuya el soporte"); } apriori.AprioriRuleGeneration(sets); if (apriori.rules.Count == 0) { throw new Exception("Insuficientes reglas, disminuya la confianza"); } List <Prediction> predictions = new List <Prediction>(); foreach (Tuple <BigInteger, BigInteger> rule in apriori.rules) { Prediction pre = new Prediction(); pre.relevance = (apriori.itemSetToSupport[rule.Item1 | rule.Item2] + 0.0) / apriori.totalNumberOfTransactions; pre.confidence = (apriori.itemSetToSupport[rule.Item2 | rule.Item1] + 0.0) / apriori.itemSetToSupport[rule.Item1]; List <Item> items = apriori.BinaryItemSetToObjectItemSet(rule.Item1); pre.antecedent = items.ToArray(); items = apriori.BinaryItemSetToObjectItemSet(rule.Item2); pre.consequent = items.ToArray(); pre.minimumQuantity = new int[pre.consequent.Length]; pre.maximumQuantity = new int[pre.consequent.Length]; for (int i = 0; i < pre.consequent.Length; i++) { pre.minimumQuantity[i] = pre.consequent[i].minQuantity; pre.maximumQuantity[i] = pre.consequent[i].maxQuantity; } predictions.Add(pre); } return(predictions); }
//[TestMethod] public void TestGenerateFIS() { DataManager data = new DataManager("../../../DatosTests/Escenario1/"); AssociationAnalyzerApriori alv = new AssociationAnalyzerApriori(data, 3, 0.4, 0.4, 2); Item[] items = new Item[3]; items[0] = data.mapFromItemCodeToItem["1"]; items[1] = data.mapFromItemCodeToItem["2"]; items[2] = data.mapFromItemCodeToItem["3"]; List <Item[]> resultado = alv.GenerateFrequentItemSets(); //for (int i = 0; i <resultado.Count; i++) { // for(int j = 0; j<resultado[i].Length; j++) // { // Debug.Write(resultado[i][j].ItemCode + ","); // } // Debug.WriteLine(""); //} Item[] freq = new Item[1]; freq[0] = data.mapFromItemCodeToItem["1"]; //Debug.WriteLine(freq[0].ItemCode + "," + freq[1].ItemCode); Assert.AreEqual(freq[0], resultado[0][0]); freq = new Item[1]; freq[0] = data.mapFromItemCodeToItem["2"]; Assert.AreEqual(freq[0], resultado[1][0]); freq = new Item[2]; freq[0] = data.mapFromItemCodeToItem["1"]; freq[1] = data.mapFromItemCodeToItem["2"]; Assert.AreEqual(freq[0], resultado[2][0]); Assert.AreEqual(freq[1], resultado[2][1]); alv = new AssociationAnalyzerApriori(new DataManager("../../../Datos/Escenario1/"), 4, 0.3, 0.3, 2); items = new Item[3]; items[0] = data.mapFromItemCodeToItem["1"]; items[1] = data.mapFromItemCodeToItem["2"]; items[2] = data.mapFromItemCodeToItem["3"]; resultado = alv.GenerateFrequentItemSets(); //for (int i = 0; i < resultado.Count; i++) //{ // for (int j = 0; j < resultado[i].Length; j++) // { // Debug.Write(resultado[i][j].ItemCode + ","); // } // Debug.WriteLine(""); //} freq = new Item[1]; freq[0] = data.mapFromItemCodeToItem["2"]; Assert.AreEqual(freq[0], resultado[0][0]); freq = new Item[1]; freq[0] = data.mapFromItemCodeToItem["1"]; Assert.AreEqual(freq[0], resultado[1][0]); freq = new Item[2]; freq[0] = data.mapFromItemCodeToItem["2"]; freq[1] = data.mapFromItemCodeToItem["1"]; Assert.AreEqual(freq[0], resultado[2][0]); Assert.AreEqual(freq[1], resultado[2][1]); freq = new Item[1]; freq[0] = data.mapFromItemCodeToItem["3"]; Assert.AreEqual(freq[0], resultado[3][0]); freq = new Item[2]; freq[0] = data.mapFromItemCodeToItem["3"]; freq[1] = data.mapFromItemCodeToItem["2"]; Assert.AreEqual(freq[0], resultado[4][0]); Assert.AreEqual(freq[1], resultado[4][1]); alv = new AssociationAnalyzerApriori(new DataManager("../../../Datos/Escenario2/"), 4, 0.3, 0.3, 2); items = new Item[4]; items[0] = data.mapFromItemCodeToItem["1"]; items[1] = data.mapFromItemCodeToItem["2"]; items[2] = data.mapFromItemCodeToItem["3"]; items[3] = data.mapFromItemCodeToItem["4"]; resultado = alv.GenerateFrequentItemSets(); //for (int i = 0; i < resultado.Count; i++) //{ // for (int j = 0; j < resultado[i].Length; j++) // { // Debug.Write(resultado[i][j].ItemCode + ","); // } // Debug.WriteLine(""); //} freq = new Item[1]; freq[0] = data.mapFromItemCodeToItem["2"]; Assert.AreEqual(freq[0], resultado[0][0]); freq = new Item[1]; freq[0] = data.mapFromItemCodeToItem["4"]; Assert.AreEqual(freq[0], resultado[1][0]); freq = new Item[2]; freq[0] = data.mapFromItemCodeToItem["4"]; freq[1] = data.mapFromItemCodeToItem["2"]; Assert.AreEqual(freq[0], resultado[2][0]); Assert.AreEqual(freq[1], resultado[2][1]); freq = new Item[1]; freq[0] = data.mapFromItemCodeToItem["3"]; Assert.AreEqual(freq[0], resultado[3][0]); freq = new Item[2]; freq[0] = data.mapFromItemCodeToItem["3"]; freq[1] = data.mapFromItemCodeToItem["2"]; Assert.AreEqual(freq[0], resultado[4][0]); Assert.AreEqual(freq[1], resultado[4][1]); freq = new Item[2]; freq[0] = data.mapFromItemCodeToItem["3"]; freq[1] = data.mapFromItemCodeToItem["4"]; Assert.AreEqual(freq[0], resultado[5][0]); Assert.AreEqual(freq[1], resultado[5][1]); freq = new Item[1]; freq[0] = data.mapFromItemCodeToItem["1"]; Assert.AreEqual(freq[0], resultado[6][0]); freq = new Item[2]; freq[0] = data.mapFromItemCodeToItem["1"]; freq[1] = data.mapFromItemCodeToItem["2"]; Assert.AreEqual(freq[0], resultado[7][0]); Assert.AreEqual(freq[1], resultado[7][1]); freq = new Item[2]; freq[0] = data.mapFromItemCodeToItem["1"]; freq[1] = data.mapFromItemCodeToItem["3"]; Assert.AreEqual(freq[0], resultado[8][0]); Assert.AreEqual(freq[1], resultado[8][1]); }
private void setupEscenario2() { asso = new AssociationAnalyzerApriori(6, 0, 0.35, 0); }