我正在做一个小的数据挖掘项目,我遇到了一个问题,那就是扫描‘项目矩阵’并计算每个候选项目集的出现次数。
This is the what candidate itemsets look like. It is a list of several frozensets.
[{'🌭', '🍔', '🍕'},
{'🍆', '🍉', '🍑'},
{'🍆', '🍊', '🍑'},
{'🌭', '🍔', '🍦'},
{'🌭', '🌮', '🍕'}]
下面是我得到的项目矩阵。对于我的候选项目集中的每个候选人,我需要检查它是否是项目矩阵每一行的子集。换句话说,我必须计算每个候选项集每行出现的次数,并将其相加。
我试着运行循环,也就是:对于矩阵的每一行,我检查每个候选者是否有任何一个是该行的子集。如果是,那么计数+1。但是,我不能用字典来做它,因为集合是不可访问的。现在我对这个问题感到有点沮丧。
为了使该示例可重现,我将表情符号更改为字符串。
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
dataset = [['Milk', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],
['Dill', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],
['Milk', 'Apple', 'Kidney Beans', 'Eggs'],
['Milk', 'Unicorn', 'Corn', 'Kidney Beans', 'Yogurt'],
['Corn', 'Onion', 'Onion', 'Kidney Beans', 'Ice cream', 'Eggs']]
te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)
df
candidate_set = [{'Apple', 'Milk'}, {'Eggs', 'Milk'}, {'Onion', 'Yogurt'}]
要找出总共有多少次是真的,例如“Apple”和“Milk”,在每一行都是真的。
如有任何帮助,我们将不胜感激!谢谢
1条答案
按热度按时间pod7payv1#
这里有一个简短的、可重复使用的例子,说明了一种方法: