FP-Growth算法中的递归

我正在尝试用Java实现FP-Growth(频繁模式挖掘)算法。我已经构建了树,但是在构建条件FP树时遇到了困难;我不明白递归函数应该做什么。给定一个频繁项列表(按频率计数的递增顺序排列) – 一个头部,以及一个树(Node类实例的列表),函数应该采取哪些步骤?

图片来源于 https://www.google.com/url?sa=i&source=images&cd=&cad=rja&uact=8&ved=2ahUKEwiT4Oeeg53lAhWPhOAKHUdSAmkQjRx6BAgBEAQ&url=https%3A%2F%2Fwww.researchgate.net%2Ffig2_330783065&psig=AOvVaw3fyRRKroFZwnASsE-vuMZy&ust=1571186297476542

我很难理解上面的伪代码。alpha和Betha是树中的节点吗?generate和construct函数是做什么的?

我可以手动进行FP-Growth,但发现实现非常 confusing。如果有帮助的话,我可以分享我生成FP-Tree的代码。


回答:

  1. alpha是导致这个特定前缀树的前缀
  2. beta是新的前缀(将要构建的树的前缀)
  3. generate行意味着类似于:将模式beta及其支持anItem.support添加到结果集中
  4. construct函数从中创建新模式,从而创建新树

construct函数的一个例子(自底向上方式)可能是这样的:

function construct(Tree, anItem)       conditional_pattern_base = empty list    在Tree中查找所有标签为anItem的节点    对于找到的每个节点:       support = node.support       conditional_pattern = empty list       当node.parent != root_node时            conditional_pattern.append(node.parent)            node = node.parent       conditional_pattern_base.append( (conditional_pattern, support))    return conditional_pattern_base

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注