Created
January 8, 2017 19:21
-
-
Save evertheylen/55e9da820a1f5bcfcd28b895a049ef4c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Stap 0: Wat voorbereiding | |
| turn transaction DB {TID -> {item}} into items {item -> {TID}} (aka tidlists) | |
| freq_itemsets = { {}: <alle TIDs> } | |
| eclat({}, items) | |
| # Het resultaat van het algoritme is freq_itemsets | |
| def eclat(items, alpha): | |
| while items not empty: | |
| item, item_tidlist = items.pop() | |
| beta = alpha + {item} | |
| # Stap 1: Voeg nieuwe regel to aan freq_itemsets | |
| # (heeft op zich niets te maken met stap 2) | |
| new_tidlist = freq_itemsets[alpha] AND item_tidlist | |
| if |new_tidlist| >= minsup: | |
| freq_itemsets[beta] = new_tidlist | |
| # Stap 2: Maak de nieuwe beta-conditional database | |
| new_items = [] | |
| for new_item, item_tidlist2 in items: | |
| new_item_tidlist = item_tidlist AND item_tidlist2 | |
| if |new_item_tidlist| >= minsup: | |
| new_items[new_item] = new_item_tidlist | |
| # Stap 3: Recursie! | |
| eclat(new_items, beta) | |
| # Deze manier van recursie gaat dan als volgt: | |
| # Stel dat we de items A, B en C hebben (in die volgorde). | |
| # Dan kunnen we een boom maken als volgt: | |
| # --+-- A --+-- B ----- C | |
| # | | | |
| # | +-- C | |
| # | | |
| # +-- B ----- C | |
| # | | |
| # +-- C | |
| # Het algoritme zijn 'alpha' varieert dan in deze volgorde (indentie is recursie): | |
| # {} | |
| # {A} | |
| # {A B} | |
| # {A B C} | |
| # {A C} | |
| # {B} | |
| # {B C} | |
| # {C} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment