我的目标是找到什么产品在一起卖的最多。因此,我决定使用Apriori算法,所以我试图将一个数据框转换为这样的东西。
最好的方法是什么?
如果有更好的方法找到我想找的东西,如果你能给我建议另一种方法,我将感激不尽。
只要按ID分组,得到一个产品列表,将这些产品的数组输入Apriori。
from apyori import apriori
df = pd.DataFrame({'ID':[1,2,1,2,3,2], 'product':['ball','bat','bat','car','baloon','ball']})
list(apriori(df.groupby('ID')['product'].apply(list).values))
輸出結果
[RelationRecord(items=frozenset({'ball'}), support=0.6666666666666666, ordered_statistics=[OrderedStatistic(items_base=frozenset(), items_add=frozenset({'ball'}), confidence=0.6666666666666666, lift=1.0)]),
RelationRecord(items=frozenset({'baloon'}), support=0.3333333333333333, ordered_statistics=[OrderedStatistic(items_base=frozenset(), items_add=frozenset({'baloon'}), confidence=0.3333333333333333, lift=1.0)]),
RelationRecord(items=frozenset({'bat'}), support=0.6666666666666666, ordered_statistics=[OrderedStatistic(items_base=frozenset(), items_add=frozenset({'bat'}), confidence=0.6666666666666666, lift=1.0)]),
RelationRecord(items=frozenset({'car'}), support=0.3333333333333333, ordered_statistics=[OrderedStatistic(items_base=frozenset(), items_add=frozenset({'car'}), confidence=0.3333333333333333, lift=1.0)]),
RelationRecord(items=frozenset({'bat', 'ball'}), support=0.6666666666666666, ordered_statistics=[OrderedStatistic(items_base=frozenset(), items_add=frozenset({'bat', 'ball'}), confidence=0.6666666666666666, lift=1.0), OrderedStatistic(items_base=frozenset({'ball'}), items_add=frozenset({'bat'}), confidence=1.0, lift=1.5), OrderedStatistic(items_base=frozenset({'bat'}), items_add=frozenset({'ball'}), confidence=1.0, lift=1.5)]),
RelationRecord(items=frozenset({'ball', 'car'}), support=0.3333333333333333, ordered_statistics=[OrderedStatistic(items_base=frozenset(), items_add=frozenset({'ball', 'car'}), confidence=0.3333333333333333, lift=1.0), OrderedStatistic(items_base=frozenset({'ball'}), items_add=frozenset({'car'}), confidence=0.5, lift=1.5), OrderedStatistic(items_base=frozenset({'car'}), items_add=frozenset({'ball'}), confidence=1.0, lift=1.5)]),
RelationRecord(items=frozenset({'bat', 'car'}), support=0.3333333333333333, ordered_statistics=[OrderedStatistic(items_base=frozenset(), items_add=frozenset({'bat', 'car'}), confidence=0.3333333333333333, lift=1.0), OrderedStatistic(items_base=frozenset({'bat'}), items_add=frozenset({'car'}), confidence=0.5, lift=1.5), OrderedStatistic(items_base=frozenset({'car'}), items_add=frozenset({'bat'}), confidence=1.0, lift=1.5)]),
RelationRecord(items=frozenset({'bat', 'ball', 'car'}), support=0.3333333333333333, ordered_statistics=[OrderedStatistic(items_base=frozenset(), items_add=frozenset({'bat', 'ball', 'car'}), confidence=0.3333333333333333, lift=1.0), OrderedStatistic(items_base=frozenset({'ball'}), items_add=frozenset({'bat', 'car'}), confidence=0.5, lift=1.5), OrderedStatistic(items_base=frozenset({'bat'}), items_add=frozenset({'ball', 'car'}), confidence=0.5, lift=1.5), OrderedStatistic(items_base=frozenset({'car'}), items_add=frozenset({'bat', 'ball'}), confidence=1.0, lift=1.5), OrderedStatistic(items_base=frozenset({'bat', 'ball'}), items_add=frozenset({'car'}), confidence=0.5, lift=1.5), OrderedStatistic(items_base=frozenset({'ball', 'car'}), items_add=frozenset({'bat'}), confidence=1.0, lift=1.5), OrderedStatistic(items_base=frozenset({'bat', 'car'}), items_add=frozenset({'ball'}), confidence=1.0, lift=1.5)])]