我想从数据集中的文本字段计算关联规则,例如下面的使用 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 等)、大小写问题、数字、标点符号、解释诸如马铃薯、土 bean 、土 bean 等单词(与词形还原)。
一旦稀疏矩阵就位,下一步就是计算稀疏矩阵中所有单词/字符串之间的关联规则。我已经在 R 中使用 arules 包完成了此操作;但是,我无法识别 Python 的“arules
等效项”。
我设想的最终解决方案将包括左侧和右侧参数的列表,以及按降序排列的规则的支持度、置信度和提升力,最高提升力规则位于顶部,最低提升力规则位于底部(同样,在 R 中使用arules
很容易获得)。
此外,我希望能够指定“培根”的右侧,它还按降序显示规则的支持度、置信度和提升度,其中“培根”的提升度规则最高顶部和最低的升力规则与底部的“培根”相关。
使用 Orange3-Associate
可能是到达这里的途径;但是,我在网上找不到任何好的例子。提前感谢您的帮助!
最佳答案
这就是你的想法吗? 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))
关于python-3.x - 使用 Python 与句子形式的数据关联规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44635518/