2

我想使用 Python从数据集中的文本字段计算关联规则,例如下面的数据集:

ID  fav_breakfast
1   I like to eat eggs and bacon for breakfast.
2   Bacon, bacon, bacon!
3   I love pancakes, but only if they have extra syrup!
4   Waffles and bacon. Eggs too!
5   Eggs, potatoes, and pancakes. No meat for me!

请注意,这Orange 2.7不是一个选项,因为我使用的是当前版本的 Python(3.6),Orange 3公平游戏也是如此;但是,我似乎无法弄清楚这个模块如何处理这种格式的数据。

在我看来,第一步是将上述转换为稀疏矩阵,例如下面显示的(截断的)矩阵:

在此处输入图像描述

接下来,我们要删除停用词(即 I、to、and、for 等)、大写/小写问题、数字、标点符号,以及诸如土豆、土豆、土豆等词的解释(带有词形还原) .

一旦这个稀疏矩阵就位,下一步就是计算稀疏矩阵中所有单词/字符串之间的关联规则。我已经使用arules包在 R 中完成了此操作;但是,我无法确定Pythonarules的“等价物” 。

我设想的最终解决方案将包括左侧和右侧参数的列表,以及按降序排列的规则的支持度、置信度和提升度,最高提升度规则在顶部,最低提升度规则在底部(再次,很容易在 R 中获得arules)。

此外,我希望能够将右侧指定为“培根”,这也以降序显示规则的支持、信心和提升,关于“培根”的最高提升规则在顶部以及与底部“培根”相关的最低提升规则。

使用Orange3-Associate可能是去这里的路线;但是,我在网上找不到任何好的例子。提前感谢您的帮助!

4

1 回答 1

2

这是你的想法吗?Orange 应该能够传递来自一个附加组件的输出并将它们用作另一个附加组件的输入。

在此处输入图像描述

[编辑]我能够在代码中重建案例,但它远没有那么性感:

import numpy as np
from orangecontrib.text
import Corpus, preprocess, vectorization
from orangecontrib.associate.fpgrowth import *

data = Corpus.from_file("deerwester")
p = preprocess.Preprocessor()
preproc_corpus = p(data)
v = vectorization.bagofwords.BoWPreprocessTransform(p, "Count", preproc_corpus)
N = 30
X = np.random.random((N, 50)) > .9
itemsets = dict(frequent_itemsets(X, .1))
rules = association_rules(itemsets, .6)
list(rules_stats(rules, itemsets, N))
于 2017-06-22T07:45:59.990 回答