//计算各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); }
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); }
//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); }
public ConditionalFPTree(UInt32 item, UInt32[] suffix) { Itemset = new Itemset(suffix.Add(item), true); }
public ConditionalFPTree(UInt32 item) { Itemset = new Itemset(item); }
/// <summary> /// print all the sequence of this sequence tree /// </summary> public void PrintSequenceTree() { Itemset <T>[] sequence = new Itemset <T> [100]; Display(Root); }
public static bool IsSubset(Itemset sourceItemset, Itemset subItemset) { return(IsSubset(sourceItemset.Items, subItemset.Items)); }