
警告:
C:\Users\DELL\PycharmProjects\pythonProject\venv\lib\site-packages\mlxtend\frequent_patterns\fpcommon.py:110: DeprecationWarning: DataFrames with non-bool types result in worse computationalperformance and their support might be discontinued in the future.Please use a DataFrame with bool type
warnings.warn(
代码:
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
data = [['西红柿', '排骨', '鸡蛋'],
['西红柿', '茄子'],
['鸡蛋', '袜子'],
['西红柿', '排骨', '茄子'],
['西红柿', '排骨', '袜子', '酸奶'],
['鸡蛋', '茄子', '酸奶'],
['排骨', '鸡蛋', '茄子'],
['土豆', '鸡蛋', '袜子'],
['西红柿', '排骨', '鞋子', '土豆']]
data = [list(set(d)) for d in data]
# 获取所有可能出现的物品
items=['土豆','排骨','茄子','袜子','西红柿','酸奶','鞋子','鸡蛋']
te = TransactionEncoder()
data = te.fit_transform(data, sparse=False).astype(int)# data = te.fit_transform(data)
df1 = pd.DataFrame(data, columns=te.columns_)
df = df1.reset_index(drop=True).rename(columns={'index': 'I'})
df.insert(0, 'ID', ['I{}'.format(i) for i in range(1, len(df)+1)])
df = df.reset_index(drop=True)
df.columns.name = None
print(df)
# 计算关联规则
rules = [('西红柿','排骨'), ('排骨','西红柿'), ('袜子','鸡蛋'),
('茄子','排骨'), ('茄子','西红柿'), ('茄子','鸡蛋')]
from mlxtend.frequent_patterns import apriori, association_rules
# 计算频繁项集
freq_itemsets = apriori(df1, min_support=0.2, use_colnames=True)
# 计算关联规则
rules = association_rules(freq_itemsets, metric="confidence", min_threshold=0.5)
rules = rules.sort_values(by=['confidence'], ascending=False)
pd.options.display.float_format = '{:.6f}'.format
# 输出结果
print(rules[['antecedents', 'consequents', 'support', 'confidence']])