KDD & Data Mining: Lab Experiment No 7: FP Growth Algorithm Name: - Gaurav Sonawane PRN:-20200802154
KDD & Data Mining: Lab Experiment No 7: FP Growth Algorithm Name: - Gaurav Sonawane PRN:-20200802154
PRN:- 20200802154
1. By creating functions.
2. By using NumPy and FP Growth library.
By Creating Function
import numpy as np
In [ ]:
import pandas as pd
from futureimport division, print_function from mlxtend.preprocessing import TransactionEnc
from mlxtend.frequent_patterns import association_rules
import warnings
warnings.filterwarnings('ignore')
# Define the function to recursively mine the FP-Tree for frequent itemsets
def mine_fp_tree(node, prefix, itemset_list, min_support):
if node.count >= min_support:
itemset = prefix + [node.item]
itemset_list.append((itemset, node.count))
for child_node in node.children.values():
mine_fp_tree(child_node, prefix + [node.item], itemset_list, min_support)
In [ ]: df = pd.read_csv('/content/Market_Basket_Optimisation.csv', header=None)
transaction = []
for i in df.itertuples():
l = set(list(i))
transaction.append([i for i in l if (str(i)!="nan" and type(i)!=int)])
len(transaction)
7501
Out[ ]
:
In [ itemsets = fp_growth(transaction,150)
]: itemsets
Loading [MathJax]/extensions/Safe.js
Out[ ] [([None, 'mineral water'], 1788),
: ([None, 'mineral water', 'eggs'], 382),
([None, 'mineral water', 'spaghetti'],
341), ([None, 'mineral water',
'chocolate'], 174), ([None, 'eggs'], 966),
([None, 'eggs', 'french fries'], 184),
([None, 'eggs', 'spaghetti'], 167),
([None, 'french fries'], 714),
([None, 'spaghetti'], 691),
([None, 'cookies'], 305),
([None, 'chocolate'], 434),
([None, 'green tea'], 360),
([None, 'escalope'], 177),
([None, 'milk'], 215)]
Out[ ]: 0 1 2 3 4 5 6 7 8 9 10 11
whole low
vegetables green cottage energy tomato green
0 shrimp almonds avocado weat yams fat
mix grapes cheese drink juice tea
flour yogurt
2 chutney NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ...
fresh
7496 butter light mayo
bread NaN NaN NaN NaN NaN NaN NaN NaN NaN
7498 chicken NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
In [ ]: transaction = []
for i in
df.itertuples(): l =
set(list(i))
transaction.append([i for i in l if (str(i)!="nan" and type(i)!=int)])
7501
Out[ ]
:
In [ ]: t = TransactionEncoder()
t_arr = t.fit_transform(transaction)
0 False True True False True False False False False False ...
1 False False False False False False False False False False ...
2 False False False False False False False False False False ...
3 False False False False True False False False False False ...
4 False False False False False False False False False False ...
... ... ... ... ... ... ... ... ... ... ... ...
7496 False False False False False False False False False False ...
7497 False False False False False False False False False False ...
7498 False False False False False False False False False False ...
7499 False False False False False False False False False False ...
7500 False False False False False False False False False False ...
Loading [MathJax]/extensions/Safe.js
Out[ ]: support itemsets
3 0.071457 (shrimp)
6 0.179709 (eggs)
7 0.087188 (burgers)
8 0.062525 (turkey)
9 0.129583 (milk)
12 0.050527 (soup)
13 0.174110 (spaghetti)
15 0.080389 (cookies)
17 0.163845 (chocolate)
18 0.059992 (chicken)
19 0.068391 (tomatoes)
20 0.095054 (pancakes)
23 0.079323 (escalope)
24 0.081056 (cake)
Loading [MathJax]/extensions/Safe.js
Out[ ] antecedent
antecedents consequents consequent
: support confidence lift leverage conviction
support support
(mineral
0 water) (eggs) 0.238368 0.179709 0.050927 0.213647 1.188845 0.008090 1.043158
(mineral water)
1 (eggs) 0.179709 0.238368 0.0509270.283383 1.188845 0.0080901.062815
(mineral
2 water) (spaghetti) 0.238368 0.174110 0.059725 0.250559 1.439085 0.018223 1.102008
(mineral water)
3(spaghetti) 0.174110 0.238368 0.0597250.343032 1.439085 0.0182231.159314
(mineral
4 water) (chocolate) 0.238368 0.163845 0.052660 0.220917 1.348332 0.013604 1.073256
(mineral water)
5(chocolate) 0.163845 0.238368 0.0526600.321400 1.348332 0.0136041.122357
Loading [MathJax]/extensions/Safe.js