【发布时间】:2014-11-21 19:24:42
【问题描述】:
我有一个“itemset”类列表,我称之为frequentItemsets,它包含数据库中的所有频繁项目集和另一个整数列表,我称之为“index_of_sensitiveItemsets”,其中包含frequentItemsets列表中敏感频繁项目集的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);
}
但我想问是否有更好的方法来获取不在 index_of_sensitiveItemsets 列表中的frequentItemsets 中剩余元素的indecies(索引的复数)。
类 Itemset 是从 spmf java library 加载的。它有两个成员:整数数组和整数支持以及许多这样的方法:
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();
}
非常感谢
【问题讨论】:
-
看起来您需要显示更多与您的问题相关的代码,这两种单独的方法是什么样的......?
itemset类的结构是什么样的......?? -
我建议不要存储敏感项目集的索引,而是存储项目集的唯一标识符。这样,如果频繁项集的顺序发生变化,您的代码将更加健壮并且不易中断。这也将允许您相当轻松地编写 Linq 查询来完成此任务。
-
@SquidScareMe - 好地方 - 我只是假设索引是关键(如数据库标识列)。很好的推荐。
-
请问唯一标识符之类的,我认为在列表中获取元素的最快方法是通过索引
-
@RationalRose - 你能展示使用项集的样子吗(就像 DJ Kraze 所问的那样)?谢谢。