2014-11-21 83 views
-1

我有一個類'itemset'的列表,我稱之爲頻繁的項目集,其中包含數據庫中的所有頻繁項目集和另一個整數列表,我稱之爲'index_of_sensitiveItemsets',其中包含敏感的indecies頻繁項目集在頻繁項目集列表中,並由用戶定義。在c#中的列表剩餘indecies#

這樣

List<Itemset> frequentItemsets = get_frequentItemsets_fromDB(); 
List<int> index_of_sensitiveItemsets = get_senFrqItemsetIndex_from_user(); 

一個解決這個問題是這樣的:

 for (int i = 0; i < allfrequentItemsets.Count - 1; i++) 
        { 
         if (! index_of_sensitiveItemsets.Contains(i)) 
          index_of_nonsensitiveItemsets.Add(i); 
        } 

但我詢問是否有更好的方式,得到的將indecies(指數的複數)頻繁項集中不在index_of_sensitiveItemsets列表中的其餘元素。

類Itemset從spmf java庫加載。它有兩個構件:整數和整數的支持陣列和像這樣的一些方法:

public class Itemset : AbstractOrderedItemset 
    { 
     public int[] itemset; 
     public int support; 

     public Itemset(); 
     public Itemset(int item); 
     public Itemset(int[] items); 

     public virtual Itemset cloneItemSetMinusAnItemset(Itemset itemsetToNotKeep); 
     public virtual Itemset cloneItemSetMinusOneItem(Integer itemToRemove); 
     public override Integer get(int position); 
     public override int getAbsoluteSupport(); 
     public virtual int[] getItems(); 
     public virtual void increaseTransactionCount(); 
     public virtual Itemset intersection(Itemset itemset2); 
     public virtual void setAbsoluteSupport(Integer support); 
     public override int size(); 
    } 

感謝很多預先

+1

看起來像你需要顯示更多的代碼是相對於你的問題2個獨立的方法看起來像什麼? 「itemset」類的結構看起來像什麼??? – MethodMan 2014-11-21 19:38:15

+0

而不是存儲敏感項目集的索引,我會建議存儲項目集的唯一標識符。這樣,如果頻繁項目集的順序發生變化,您的代碼將更加健壯並且不容易中斷。這也可以讓你很容易地編寫一個Linq查詢來完成這個任務。 – SquidScareMe 2014-11-21 20:38:31

+1

@SquidScareMe - 好點 - 我只是假設索引是關鍵(如數據庫標識列)。好的建議。 – PhillipH 2014-11-21 20:42:58

回答

0

這取決於sensitiveItemSets對frequentItemSets的比率。如果frequencyItemSets的50%以上爲sensitiveItemSets,則更有意義的方法是顛倒問題並將所有的frequentItemSets複製到nonsensitiveItemSets,然後刪除所有不存在於sensitiveItemSets中的那些。

無論哪種方式,它不太可能有一個比你寫的更好的執行代碼構造。是的,您可以使用一些花哨的Linq以較少的代碼行來完成此任務,但是您的代碼很明確且易於理解。我會堅持你的所得,除非你可以提供一些進一步的信息,表明它在某種程度上表現不佳。

+0

非常感謝 – 2014-11-21 22:19:33