//计算各URI通过网关的成功率和时延,也可以指定uri
 public void getPostAndGetGateWay(Itemset hs, ILookup<string, string> m_dicTransactions)
 {
     var gn = from p in sqlserver_gn_table
              where p.Event_Type == 4
              where p.SynDirection == 0
              //where p.my_URI_Main=="qq.com" || p.my_URI_Main==string.Empty
              //group p by new { ABC = p.DEST_IP == 2885681162 } into ttt
              //group p by p.my_DEST_IP into ttt
              //where detail == true ? p.my_URI_Main == "10086.cn" : p.my_URI_Main != null
              where hs.Contains(p.Prefix_IMEI)
              group p by p.Prefix_IMEI into ttt
              select new
              {
                  //abc = ttt.Key.ABC.ToString(),
                  abc = ttt.Key.ToString(),
                  type = m_dicTransactions[ttt.Key.ToString()].Where(e => e.IndexOf("iphone") != -1|e.IndexOf("iPhone") != -1).FirstOrDefault(),
                  cnt = ttt.Count(),
                  suc = ttt.Where(e => e.Resp != null).Count(),
                  percent = 1.0 * ttt.Where(e => e.Resp != null).Count() / ttt.Count(),
                  uri_size = ttt.Average(e => e.my_URI_Len),
                  size = ttt.Average(e => e.IP_LEN_DL),  //这里只去下行
                  rate = ttt.Average(e => e.Duration) == null ? 0 :
                  1.0 * ttt.Average(e => e.IP_LEN_DL) / ttt.Average(e => (double)e.Duration),
                  delay = ttt.Average(e => e.Duration)  //这里不取第1个包
              };
     MicroObjectDumper.Write(gn.OrderByDescending(e => e.cnt));
 }
        //Gn接口各指标统计分析,按照终端分类,按照uri分类,维度????
        public void getKeyPerformance(Itemset hs)
        {
            var db = from p in sqlserver_gn_table
                     //where detail == true ? p.my_URI_Main == "10086.cn" : p.my_URI_Main != null
                     where p.Event_Type == 4
                     where p.SynDirection == 0
                     //where hs.Contains(p.Prefix_IMEI)
                     group p by hs.Contains(p.Prefix_IMEI) into ttt  //23g业务类型区分
                     select new
                     {
                         //rat = ttt.Key.RAT_TYPE,
                         event_type = ttt.Key,
                         cnt = ttt.Count(),
                         suc = ttt.Where(e => e.Resp != null).Count(),
                         percent = 1.0 * ttt.Where(e => e.Resp != null).Count() / ttt.Count(),
                         uri_size = ttt.Average(e => e.my_URI_Len),
                         size = ttt.Average(e => e.IP_LEN_DL),  //这里只去下行
                         rate = ttt.Average(e => e.Duration) == null ? 0 :
                         1.0 * ttt.Average(e => e.IP_LEN_DL) / ttt.Average(e => (double)e.Duration),
                         delay = ttt.Average(e => e.Duration)  //这里不取第1个包
                     };

            var dborder = db.Where(e => e.cnt > 0).OrderByDescending(e => e.cnt);
            MicroObjectDumper.Write(dborder);
        }
Example #3
0
        public ClosedRules runAlgorithm(Itemsets closedItemsets, double minconf, string outputFile)
        {
            this.closedItemsets = closedItemsets;

            // if the user want to keep the result into memory
            if (outputFile == null)
            {
                writer = null;
                rules  = new ClosedRules("Closed association rules");
            }
            else
            {
                // if the user want to save the result to a file
                //rules = null;
                writer = new System.IO.StreamWriter(outputFile);
            }

            startTimestamp = CurrentTimeMillis();

            this.minconf = minconf;

            //For each frequent itemset of size >=2
            for (int k = 2; k < closedItemsets.getLevels().Count; k++)
            {
                foreach (Itemset lk in closedItemsets.getLevels().ElementAt(k))
                {
                    //}
                    //for(Itemset lk : closedItemsets.getLevels().get(k)){
                    // create H1
                    HashSet <Itemset> H1 = new HashSet <Itemset>();

                    foreach (int item in lk.getItems())
                    {
                        //for(Integer item : lk.getItems()){  // THIS PART WAS CHANGED
                        Itemset itemset = new Itemset(item);
                        H1.Add(itemset);
                    }

                    HashSet <Itemset> H1_for_recursion = new HashSet <Itemset>();
                    foreach (Itemset hm_P_1 in H1)
                    {
                        //for(Itemset hm_P_1 : H1){
                        Itemset itemset_Lk_minus_hm_P_1 = lk.cloneItemSetMinusAnItemset(hm_P_1);
                        //WRONG TODO
                        int    supLkMinus_hm_P_1 = calculateSupport(itemset_Lk_minus_hm_P_1); // THIS COULD BE DONE ANOTHER WAY ?
                        int    supLk             = calculateSupport(lk);                      // IT COULD PERHAPS BE IMPROVED....
                        double conf = ((double)supLk) / ((double)supLkMinus_hm_P_1);

                        if (conf >= minconf)
                        {
                            ClosedRule rule = new ClosedRule(itemset_Lk_minus_hm_P_1, hm_P_1, lk.getAbsoluteSupport(), conf);
                            save(rule);
                            H1_for_recursion.Add(hm_P_1);// for recursion
                        }
                    }

                    // call apGenRules
                    apGenrules(k, 1, lk, H1_for_recursion);
                }
            }

            endTimeStamp = CurrentTimeMillis();

            // if the user chose to save to a file, we close the file.
            if (writer != null)
            {
                writer.Close();
            }


            return(rules);
        }
Example #4
0
        //support = 50%
        private ItemsetCollection GetItems()
        {
            ItemsetCollection allItems = new ItemsetCollection();
            Itemset           item1    = new Itemset {
                1
            };

            item1.Support = 50.0;
            item1.Tid     = 0;
            allItems.Add(item1);
            Itemset item2 = new Itemset {
                3
            };

            item2.Support = 75.0;
            item2.Tid     = 0;
            allItems.Add(item2);
            Itemset item3 = new Itemset {
                2
            };

            item3.Support = 75.0;
            item3.Tid     = 0;
            allItems.Add(item3);
            Itemset item4 = new Itemset {
                5
            };

            item4.Support = 75.0;
            item4.Tid     = 0;
            allItems.Add(item4);
            Itemset item5 = new Itemset {
                2, 5
            };

            item5.Support = 75.0;
            item5.Tid     = 0;
            allItems.Add(item5);
            Itemset item6 = new Itemset {
                3, 5
            };

            item6.Support = 50.0;
            item6.Tid     = 0;
            allItems.Add(item6);
            Itemset item7 = new Itemset {
                3, 2
            };

            item7.Support = 50.0;
            item7.Tid     = 0;
            allItems.Add(item7);
            Itemset item8 = new Itemset {
                1, 3
            };

            item8.Support = 50.0;
            item8.Tid     = 0;
            allItems.Add(item8);
            Itemset item9 = new Itemset {
                2, 3, 5
            };

            item9.Support = 50.0;
            item9.Tid     = 0;
            allItems.Add(item9);
            return(allItems);
        }
Example #5
0
 public ConditionalFPTree(UInt32 item, UInt32[] suffix)
 {
     Itemset = new Itemset(suffix.Add(item), true);
 }
Example #6
0
 public ConditionalFPTree(UInt32 item)
 {
     Itemset = new Itemset(item);
 }
Example #7
0
 /// <summary>
 /// print all the sequence of this sequence tree
 /// </summary>
 public void PrintSequenceTree()
 {
     Itemset <T>[] sequence = new Itemset <T> [100];
     Display(Root);
 }
Example #8
0
 public static bool IsSubset(Itemset sourceItemset, Itemset subItemset)
 {
     return(IsSubset(sourceItemset.Items, subItemset.Items));
 }