參考:利用mlxtend進(jìn)行數(shù)據(jù)關(guān)聯(lián)分析
#!/usr/bin/python
# coding=utf-8
import numpy as np
import pandas as pd
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
# 畫圖支持中文顯示
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 負(fù)號(hào)
plt.rcParams['axes.unicode_minus'] = False
# 顯示所有列
pd.set_option('display.max_columns', None)
# 顯示所有行
pd.set_option('display.max_rows', None)
# 設(shè)置value的顯示長(zhǎng)度為10000,默認(rèn)為50
pd.set_option('display.width',10000)
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
#
np.set_printoptions(linewidth=1000)
#測(cè)試數(shù)據(jù)
records = [['牛奶', '洋蔥', '豬肉', '雞蛋', '洋蔥', '酸奶'],
['洋蔥', '豆角', '酸奶', '雞蛋', '蘋果'],
['牛奶', '蘋果', '豆角', '雞蛋'],
['牛奶', '玉米', '胡蘿卜', '豆角', '酸奶'],
['玉米', '洋蔥', '豆角', '冰激凌', '雞蛋']]
Encoder = TransactionEncoder()
encoded_data = Encoder.fit_transform(records)
df = pd.DataFrame(encoded_data, columns=Encoder.columns_)
print(df)
# 頻繁項(xiàng)集
frequent_items = apriori(df, min_support=0.05, use_colnames=True, max_len=4).sort_values(by='support', ascending=False)
# min_support:給定的最小支持度
# use_colnames:默認(rèn)False弟断,則返回的物品組會(huì)用編號(hào)顯示咏花,為True的話直接顯示物品名稱。
# max_len=None:最大物品組合數(shù)阀趴,默認(rèn)是None昏翰,不做限制。
print('frequent_itemsets 為頻繁項(xiàng)集:(Support列為支持度刘急,即 項(xiàng)集發(fā)生頻率/總訂單量)\n', frequent_items)
# 關(guān)聯(lián)規(guī)則
rules = association_rules(frequent_items, metric='lift', min_threshold=0.8) # metric:默認(rèn)是confidence
print('rules為最終關(guān)聯(lián)規(guī)則結(jié)果表:(antecedants前項(xiàng)集棚菊,consequents后項(xiàng)集,support支持度排霉,confidence置信度窍株,lift提升度民轴。)\n', rules)
print('-----------------------------------------------------------------------------------------------------------------------')
# 結(jié)果檢視
# ass_rule = rules.sort_values(by='leverage', ascending=False, inplace=True)
# print(ass_rule)
# 選取(置信度confidence≥0.8)&(提升度lift≥2)的規(guī)則球订,按lift降序排序
ass_rule = rules[ (rules['lift'] >= 2) & (rules['confidence'] >= 0.8) ].sort_values("lift",ascending = False)
print(ass_rule)
# 數(shù)據(jù)編碼
冰激凌 洋蔥 牛奶 豬肉 玉米 胡蘿卜 蘋果 豆角 酸奶 雞蛋
0 False True True True False False False False True True
1 False True False False False False True True True True
2 False False True False False False True True False True
3 False False True False True True False True True False
4 True True False False True False False True False True
frequent_itemsets 為頻繁項(xiàng)集:(Support列為支持度后裸,即 項(xiàng)集發(fā)生頻率/總訂單量)
support itemsets
7 0.8 (豆角)
9 0.8 (雞蛋)
1 0.6 (洋蔥)
2 0.6 (牛奶)
40 0.6 (豆角, 雞蛋)
8 0.6 (酸奶)
20 0.6 (洋蔥, 雞蛋)
31 0.4 (豆角, 玉米)
39 0.4 (豆角, 酸奶)
41 0.4 (酸奶, 雞蛋)
80 0.4 (豆角, 雞蛋, 蘋果)
27 0.4 (雞蛋, 牛奶)
26 0.4 (酸奶, 牛奶)
25 0.4 (豆角, 牛奶)
19 0.4 (洋蔥, 酸奶)
38 0.4 (雞蛋, 蘋果)
18 0.4 (洋蔥, 豆角)
36 0.4 (豆角, 蘋果)
60 0.4 (洋蔥, 酸奶, 雞蛋)
4 0.4 (玉米)
59 0.4 (洋蔥, 雞蛋, 豆角)
6 0.4 (蘋果)
70 0.2 (豆角, 酸奶, 牛奶)
79 0.2 (豆角, 酸奶, 蘋果)
78 0.2 (胡蘿卜, 酸奶, 豆角)
77 0.2 (豆角, 雞蛋, 玉米)
76 0.2 (豆角, 酸奶, 玉米)
71 0.2 (豆角, 雞蛋, 牛奶)
66 0.2 (胡蘿卜, 豆角, 牛奶)
67 0.2 (胡蘿卜, 酸奶, 牛奶)
75 0.2 (胡蘿卜, 酸奶, 玉米)
74 0.2 (胡蘿卜, 豆角, 玉米)
73 0.2 (豬肉, 酸奶, 雞蛋)
72 0.2 (酸奶, 牛奶, 雞蛋)
68 0.2 (豆角, 蘋果, 牛奶)
69 0.2 (雞蛋, 牛奶, 蘋果)
65 0.2 (玉米, 酸奶, 牛奶)
0 0.2 (冰激凌)
81 0.2 (蘋果, 酸奶, 雞蛋)
82 0.2 (豆角, 酸奶, 雞蛋)
102 0.2 (胡蘿卜, 酸奶, 豆角, 玉米)
101 0.2 (豆角, 雞蛋, 牛奶, 蘋果)
100 0.2 (胡蘿卜, 酸奶, 豆角, 牛奶)
99 0.2 (玉米, 豆角, 酸奶, 牛奶)
98 0.2 (玉米, 胡蘿卜, 酸奶, 牛奶)
97 0.2 (玉米, 胡蘿卜, 豆角, 牛奶)
96 0.2 (豬肉, 酸奶, 牛奶, 雞蛋)
95 0.2 (洋蔥, 酸奶, 豆角, 雞蛋)
94 0.2 (洋蔥, 酸奶, 雞蛋, 蘋果)
93 0.2 (洋蔥, 雞蛋, 豆角, 蘋果)
92 0.2 (洋蔥, 酸奶, 豆角, 蘋果)
91 0.2 (洋蔥, 雞蛋, 豆角, 玉米)
90 0.2 (洋蔥, 酸奶, 豬肉, 雞蛋)
89 0.2 (洋蔥, 酸奶, 牛奶, 雞蛋)
88 0.2 (洋蔥, 雞蛋, 豬肉, 牛奶)
87 0.2 (洋蔥, 酸奶, 豬肉, 牛奶)
86 0.2 (豆角, 雞蛋, 玉米, 冰激凌)
63 0.2 (玉米, 胡蘿卜, 牛奶)
85 0.2 (洋蔥, 雞蛋, 豆角, 冰激凌)
84 0.2 (洋蔥, 雞蛋, 玉米, 冰激凌)
83 0.2 (洋蔥, 豆角, 玉米, 冰激凌)
64 0.2 (玉米, 豆角, 牛奶)
52 0.2 (洋蔥, 雞蛋, 豬肉)
62 0.2 (豬肉, 雞蛋, 牛奶)
33 0.2 (雞蛋, 玉米)
30 0.2 (胡蘿卜, 玉米)
29 0.2 (豬肉, 雞蛋)
28 0.2 (豬肉, 酸奶)
24 0.2 (蘋果, 牛奶)
23 0.2 (胡蘿卜, 牛奶)
22 0.2 (玉米, 牛奶)
21 0.2 (豬肉, 牛奶)
17 0.2 (洋蔥, 蘋果)
16 0.2 (洋蔥, 玉米)
15 0.2 (洋蔥, 豬肉)
14 0.2 (洋蔥, 牛奶)
13 0.2 (雞蛋, 冰激凌)
12 0.2 (豆角, 冰激凌)
11 0.2 (玉米, 冰激凌)
10 0.2 (洋蔥, 冰激凌)
5 0.2 (胡蘿卜)
3 0.2 (豬肉)
32 0.2 (酸奶, 玉米)
34 0.2 (胡蘿卜, 豆角)
61 0.2 (豬肉, 酸奶, 牛奶)
35 0.2 (胡蘿卜, 酸奶)
58 0.2 (洋蔥, 酸奶, 豆角)
57 0.2 (洋蔥, 蘋果, 雞蛋)
56 0.2 (洋蔥, 酸奶, 蘋果)
55 0.2 (洋蔥, 蘋果, 豆角)
54 0.2 (洋蔥, 雞蛋, 玉米)
53 0.2 (洋蔥, 豆角, 玉米)
51 0.2 (洋蔥, 酸奶, 豬肉)
50 0.2 (洋蔥, 雞蛋, 牛奶)
49 0.2 (洋蔥, 酸奶, 牛奶)
48 0.2 (洋蔥, 豬肉, 牛奶)
47 0.2 (豆角, 雞蛋, 冰激凌)
46 0.2 (雞蛋, 玉米, 冰激凌)
45 0.2 (豆角, 玉米, 冰激凌)
44 0.2 (洋蔥, 雞蛋, 冰激凌)
43 0.2 (洋蔥, 豆角, 冰激凌)
42 0.2 (洋蔥, 玉米, 冰激凌)
37 0.2 (酸奶, 蘋果)
103 0.2 (蘋果, 豆角, 酸奶, 雞蛋)
關(guān)聯(lián)規(guī)則表.png