Ejemplo n.º 1
0
 /// <summary>
 /// Khởi tạo luật kết hợp
 /// </summary>
 public ClssRules()
 {
     X          = new clssItemSet();
     Y          = new clssItemSet();
     Support    = 0.0;
     Confidence = 0.0;
 }
        //
        public static ClssItemCollection FindSubsets(clssItemSet itemset, int n)
        {
            ClssItemCollection subsets = new ClssItemCollection();

            int subsetCount = (int)Math.Pow(2, itemset.Count);

            for (int i = 0; i < subsetCount; i++)
            {
                if (n == 0 || GetOnCount(i, itemset.Count) == n)
                {
                    string binary = DecimalToBinary(i, itemset.Count);

                    clssItemSet subset = new clssItemSet();
                    for (int charIndex = 0; charIndex < binary.Length; charIndex++)
                    {
                        if (binary[charIndex] == '1')
                        {
                            subset.Add(itemset[charIndex]);
                        }
                    }
                    subsets.Add(subset);
                }
            }

            return(subsets);
        }
        public clssItemSet Remove(clssItemSet itemset)
        {
            clssItemSet removed = new clssItemSet();

            removed.AddRange(from item in this
                             where !itemset.Contains(item)
                             select item);
            return(removed);
        }
Ejemplo n.º 4
0
        public static ClssItemCollection DoApriori(ClssItemCollection db, double supportThreshold)
        {
            clssItemSet        I  = db.GetUniqueItems();
            ClssItemCollection L  = new ClssItemCollection(); // tập dữ liệu phổ biến
            ClssItemCollection Li = new ClssItemCollection(); //tập dữ liệu
            ClssItemCollection Ci = new ClssItemCollection(); //tập dữ liệu được lược bớt

            //Duyệt sự lặp lại đầu tiên của phần tử trong tập dữ liệu
            foreach (string item in I)
            {
                Ci.Add(new clssItemSet()
                {
                    item
                });
            }

            //Sự lặp lại các lần kế tiếp
            int k = 2;

            while (Ci.Count != 0)
            {
                //Lấy Li từ Ci (phần tử được lược bỏ)
                Li.Clear();
                foreach (clssItemSet itemset in Ci)
                {
                    itemset.Support = db.FindSupport(itemset);
                    if (itemset.Support >= supportThreshold)
                    {
                        Li.Add(itemset);
                        L.Add(itemset);
                    }
                }


                Ci.Clear();
                Ci.AddRange(clssBit.FindSubsets(Li.GetUniqueItems(), k));
                k += 1;
            }

            return(L);
        }
 /// <summary>
 /// Kiểm tra
 /// </summary>
 /// <param name="itemset"></param>
 /// <returns></returns>
 public bool Contains(clssItemSet itemset)
 {
     return(this.Intersect(itemset).Count() == itemset.Count);
 }