在 mlxtend 中使用 apriori 方法后,与创建的频繁项集相关的事务号不再保留。它们被丢弃。
我怎样才能保留交易编号?
df = pd.read_csv('association_rule_items_fullmech.csv')
basket = (df.groupby(['transaction_doc', 'text'])['transaction_doc'].sum().unstack().reset_index().fillna(0).set_index('transaction_doc'))
# one-hot encoding
def encode_units(x):
if x <= 0:
return 0
elif x >= 1:
return 1
basket_sets = basket.applymap(encode_units)
baskets_sets 数据框基本上看起来像这样(这只是一个迷你任意示例,但结构相同):
transaction_doc - 文本 | “字符串 1” | “字符串 2” | “字符串 3” |
---|---|---|---|
0 | 1 | 0 | 1 |
1 | 1 | 1 | 0 |
2 | 0 | 0 | 1 |
然后我应用先验函数
frequent_itemsets = apriori(basket_sets, min_support=0.001, use_colnames=True)
然而,在这个 apriori 函数之后,transaction_doc,即文本来自哪个文档的指示符,从 idx 列中消失。我得到一个带有频繁项集的重置索引列。我希望能够在应用 apriori 函数后保留 transaction_doc 列。