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);
 }
Esempio n. 5
0
        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);
 }