我在维度为(23144, 32)的临床数据集上使用库mlxtend运行关联规则挖掘。
不幸的是,大约50分钟后,我收到了一条消息“内核死了……”,所以在检查之后,我意识到它耗尽了内存。
我也尝试过Google Cloud (试用版300美元免费,最大使用15 up ),但问题是一样的。
问题:
1)以上数据量是否可以作为关联规则算法的大数据?我觉得它还很小,为什么会消耗很多内存呢?
2)我也尝试了FPGrowth算法,它比Apriori 5x更快,但是问题仍然是一样的,有什么方法可以克服这个问题吗?
3)我认为当前的关联规则算法的python库对相对较大的数据没有很好的支持?我说的对吗?
Python代码
dataset01 = pd.read_csv('dataset_origin.csv')
transaction = TransactionEncoder()
transaction_fit = transaction.fit(dataset01.to_numpy().tolist()).transform(dataset01.to_numpy().tolist())
# transaction_fit
array([[False, True, True, ..., True, False, True],
[ True, False, True, ..., True, False, True],
[ True, False, True, ..., True, False, True],
...,
[ True, False, True, ..., True, False, True],
[ True, False, True, ..., True, False, True],
[False, True, True, ..., True, False, True]])
df_rf = pd.DataFrame(transaction_fit, columns=transaction.columns_)
frequent_itemsets = fpgrowth(df_rf, min_support=0.3, use_colnames=True)程序被卡在下面的代码行上
发布于 2020-06-12 22:00:02
我刚刚用apriori()函数解决了完全相同的问题。
1)当您尝试从具有太多列和太少行的稀疏数据帧(在您的示例中为df_rf)中获取频繁项集时,您可能遇到了高维问题。在我的例子中,我的稀疏数据帧只有很少的行,但是有很多列((3, 72)和(27, 500))。如果你对这个主题感兴趣,你可以找到许多关于关联规则挖掘应用于高维数据的论文。
2)我猜当你有高维数据时,在两种算法之间的选择没有什么帮助。
3)通过查看mlxtend文档,我找不到任何与此问题相关的支持。但是,如果您将min_support设置为高于0.3 (尝试不同的值),您的代码将完成运行。
发布于 2020-06-18 21:34:20
非常感谢您的评论
对不起,我在问题上犯了一个错误。我的数据集是23144行32列。我认为它仍然涉及到高维数据集的关联规则挖掘。
我也尝试过的另一种方法是找到闭合/最大频繁项目集,最后,我得到了同样的问题。
然后,我逐渐将最小支持度增加到0.6,然后算法运行得很好,但我认为它并不好,因为我们可能会错过有价值的规则(信息丢失)。
仍在寻找解决方案
https://stackoverflow.com/questions/62134429
复制相似问题