Skip to content

Commit

Permalink
Merge branch 'develop' into feature/refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
ymoch committed Nov 29, 2019
2 parents 6318e6f + f7a04cc commit 0a7a533
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 17 deletions.
3 changes: 1 addition & 2 deletions .travis.yml
@@ -1,7 +1,6 @@
language: python
python:
- 2.7
- 3.3
- 3.4
- 3.5
install:
Expand All @@ -12,7 +11,7 @@ script:
# Normal unit tests.
- coverage run --source=apyori setup.py test
# Code quality check.
- pylint apyori.py test/*.py
- pyflakes apyori.py test/*.py
# Integration test
- apyori-run data/integration_test_input_1.tsv > result.txt
- diff result.txt data/integration_test_output_1.txt
Expand Down
18 changes: 10 additions & 8 deletions apyori.py
Expand Up @@ -208,14 +208,16 @@ def gen_ordered_statistics(transaction_manager, record):
record -- A support record as a SupportRecord instance.
"""
items = record.items
for combination_set in combinations(sorted(items), len(items) - 1):
items_base = frozenset(combination_set)
items_add = frozenset(items.difference(items_base))
confidence = (
record.support / transaction_manager.calc_support(items_base))
lift = confidence / transaction_manager.calc_support(items_add)
yield OrderedStatistic(
frozenset(items_base), frozenset(items_add), confidence, lift)
sorted_items = sorted(items)
for base_length in range(len(items)):
for combination_set in combinations(sorted_items, base_length):
items_base = frozenset(combination_set)
items_add = frozenset(items.difference(items_base))
confidence = (
record.support / transaction_manager.calc_support(items_base))
lift = confidence / transaction_manager.calc_support(items_add)
yield OrderedStatistic(
frozenset(items_base), frozenset(items_add), confidence, lift)


def filter_ordered_statistics(ordered_statistics, **kwargs):
Expand Down
10 changes: 5 additions & 5 deletions data/integration_test_output_1.txt
Expand Up @@ -4,15 +4,15 @@
{"items": ["beer", "butter"], "support": 0.25, "ordered_statistics": [{"items_base": ["butter"], "items_add": ["beer"], "confidence": 0.6666666666666666, "lift": 1.0666666666666667}]}
{"items": ["beer", "cheese"], "support": 0.25, "ordered_statistics": [{"items_base": ["cheese"], "items_add": ["beer"], "confidence": 0.6666666666666666, "lift": 1.0666666666666667}]}
{"items": ["beer", "jam"], "support": 0.375, "ordered_statistics": [{"items_base": ["beer"], "items_add": ["jam"], "confidence": 0.6, "lift": 1.2}, {"items_base": ["jam"], "items_add": ["beer"], "confidence": 0.75, "lift": 1.2}]}
{"items": ["beer", "nuts"], "support": 0.5, "ordered_statistics": [{"items_base": ["beer"], "items_add": ["nuts"], "confidence": 0.8, "lift": 1.28}, {"items_base": ["nuts"], "items_add": ["beer"], "confidence": 0.8, "lift": 1.28}]}
{"items": ["beer", "nuts"], "support": 0.5, "ordered_statistics": [{"items_base": [], "items_add": ["beer", "nuts"], "confidence": 0.5, "lift": 1.0}, {"items_base": ["beer"], "items_add": ["nuts"], "confidence": 0.8, "lift": 1.28}, {"items_base": ["nuts"], "items_add": ["beer"], "confidence": 0.8, "lift": 1.28}]}
{"items": ["cheese", "nuts"], "support": 0.375, "ordered_statistics": [{"items_base": ["cheese"], "items_add": ["nuts"], "confidence": 1.0, "lift": 1.6}, {"items_base": ["nuts"], "items_add": ["cheese"], "confidence": 0.6, "lift": 1.5999999999999999}]}
{"items": ["jam", "nuts"], "support": 0.375, "ordered_statistics": [{"items_base": ["jam"], "items_add": ["nuts"], "confidence": 0.75, "lift": 1.2}, {"items_base": ["nuts"], "items_add": ["jam"], "confidence": 0.6, "lift": 1.2}]}
{"items": ["beer", "butter", "jam"], "support": 0.125, "ordered_statistics": [{"items_base": ["beer", "butter"], "items_add": ["jam"], "confidence": 0.5, "lift": 1.0}, {"items_base": ["butter", "jam"], "items_add": ["beer"], "confidence": 1.0, "lift": 1.6}]}
{"items": ["beer", "butter", "nuts"], "support": 0.125, "ordered_statistics": [{"items_base": ["beer", "butter"], "items_add": ["nuts"], "confidence": 0.5, "lift": 0.8}, {"items_base": ["butter", "nuts"], "items_add": ["beer"], "confidence": 1.0, "lift": 1.6}]}
{"items": ["beer", "cheese", "jam"], "support": 0.125, "ordered_statistics": [{"items_base": ["beer", "cheese"], "items_add": ["jam"], "confidence": 0.5, "lift": 1.0}, {"items_base": ["cheese", "jam"], "items_add": ["beer"], "confidence": 1.0, "lift": 1.6}]}
{"items": ["beer", "cheese", "nuts"], "support": 0.25, "ordered_statistics": [{"items_base": ["beer", "cheese"], "items_add": ["nuts"], "confidence": 1.0, "lift": 1.6}, {"items_base": ["beer", "nuts"], "items_add": ["cheese"], "confidence": 0.5, "lift": 1.3333333333333333}, {"items_base": ["cheese", "nuts"], "items_add": ["beer"], "confidence": 0.6666666666666666, "lift": 1.0666666666666667}]}
{"items": ["beer", "jam", "nuts"], "support": 0.375, "ordered_statistics": [{"items_base": ["beer", "jam"], "items_add": ["nuts"], "confidence": 1.0, "lift": 1.6}, {"items_base": ["beer", "nuts"], "items_add": ["jam"], "confidence": 0.75, "lift": 1.5}, {"items_base": ["jam", "nuts"], "items_add": ["beer"], "confidence": 1.0, "lift": 1.6}]}
{"items": ["beer", "cheese", "nuts"], "support": 0.25, "ordered_statistics": [{"items_base": ["cheese"], "items_add": ["beer", "nuts"], "confidence": 0.6666666666666666, "lift": 1.3333333333333333}, {"items_base": ["beer", "cheese"], "items_add": ["nuts"], "confidence": 1.0, "lift": 1.6}, {"items_base": ["beer", "nuts"], "items_add": ["cheese"], "confidence": 0.5, "lift": 1.3333333333333333}, {"items_base": ["cheese", "nuts"], "items_add": ["beer"], "confidence": 0.6666666666666666, "lift": 1.0666666666666667}]}
{"items": ["beer", "jam", "nuts"], "support": 0.375, "ordered_statistics": [{"items_base": ["beer"], "items_add": ["jam", "nuts"], "confidence": 0.6, "lift": 1.5999999999999999}, {"items_base": ["jam"], "items_add": ["beer", "nuts"], "confidence": 0.75, "lift": 1.5}, {"items_base": ["nuts"], "items_add": ["beer", "jam"], "confidence": 0.6, "lift": 1.5999999999999999}, {"items_base": ["beer", "jam"], "items_add": ["nuts"], "confidence": 1.0, "lift": 1.6}, {"items_base": ["beer", "nuts"], "items_add": ["jam"], "confidence": 0.75, "lift": 1.5}, {"items_base": ["jam", "nuts"], "items_add": ["beer"], "confidence": 1.0, "lift": 1.6}]}
{"items": ["butter", "jam", "nuts"], "support": 0.125, "ordered_statistics": [{"items_base": ["butter", "jam"], "items_add": ["nuts"], "confidence": 1.0, "lift": 1.6}, {"items_base": ["butter", "nuts"], "items_add": ["jam"], "confidence": 1.0, "lift": 2.0}]}
{"items": ["cheese", "jam", "nuts"], "support": 0.125, "ordered_statistics": [{"items_base": ["cheese", "jam"], "items_add": ["nuts"], "confidence": 1.0, "lift": 1.6}]}
{"items": ["beer", "butter", "jam", "nuts"], "support": 0.125, "ordered_statistics": [{"items_base": ["beer", "butter", "jam"], "items_add": ["nuts"], "confidence": 1.0, "lift": 1.6}, {"items_base": ["beer", "butter", "nuts"], "items_add": ["jam"], "confidence": 1.0, "lift": 2.0}, {"items_base": ["butter", "jam", "nuts"], "items_add": ["beer"], "confidence": 1.0, "lift": 1.6}]}
{"items": ["beer", "cheese", "jam", "nuts"], "support": 0.125, "ordered_statistics": [{"items_base": ["beer", "cheese", "jam"], "items_add": ["nuts"], "confidence": 1.0, "lift": 1.6}, {"items_base": ["beer", "cheese", "nuts"], "items_add": ["jam"], "confidence": 0.5, "lift": 1.0}, {"items_base": ["cheese", "jam", "nuts"], "items_add": ["beer"], "confidence": 1.0, "lift": 1.6}]}
{"items": ["beer", "butter", "jam", "nuts"], "support": 0.125, "ordered_statistics": [{"items_base": ["beer", "butter"], "items_add": ["jam", "nuts"], "confidence": 0.5, "lift": 1.3333333333333333}, {"items_base": ["butter", "jam"], "items_add": ["beer", "nuts"], "confidence": 1.0, "lift": 2.0}, {"items_base": ["butter", "nuts"], "items_add": ["beer", "jam"], "confidence": 1.0, "lift": 2.6666666666666665}, {"items_base": ["beer", "butter", "jam"], "items_add": ["nuts"], "confidence": 1.0, "lift": 1.6}, {"items_base": ["beer", "butter", "nuts"], "items_add": ["jam"], "confidence": 1.0, "lift": 2.0}, {"items_base": ["butter", "jam", "nuts"], "items_add": ["beer"], "confidence": 1.0, "lift": 1.6}]}
{"items": ["beer", "cheese", "jam", "nuts"], "support": 0.125, "ordered_statistics": [{"items_base": ["beer", "cheese"], "items_add": ["jam", "nuts"], "confidence": 0.5, "lift": 1.3333333333333333}, {"items_base": ["cheese", "jam"], "items_add": ["beer", "nuts"], "confidence": 1.0, "lift": 2.0}, {"items_base": ["beer", "cheese", "jam"], "items_add": ["nuts"], "confidence": 1.0, "lift": 1.6}, {"items_base": ["beer", "cheese", "nuts"], "items_add": ["jam"], "confidence": 0.5, "lift": 1.0}, {"items_base": ["cheese", "jam", "nuts"], "items_add": ["beer"], "confidence": 1.0, "lift": 1.6}]}
2 changes: 1 addition & 1 deletion dev-requirements.txt
Expand Up @@ -3,4 +3,4 @@ nose
mock

# Code quality utilities.
pylint
pyflakes
1 change: 0 additions & 1 deletion setup.py
Expand Up @@ -32,7 +32,6 @@
'License :: OSI Approved :: MIT License',
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Topic :: Scientific/Engineering :: Mathematics',
Expand Down
26 changes: 26 additions & 0 deletions test/test_gen_ordered_statistics.py
Expand Up @@ -17,17 +17,43 @@ def test_normal():
"""
transaction_manager = Mock(spec=TransactionManager)
transaction_manager.calc_support.side_effect = lambda key: {
frozenset([]): 1.0,
frozenset(['A']): 0.8,
frozenset(['B']): 0.4,
frozenset(['C']): 0.2,
frozenset(['A', 'B']): 0.2,
frozenset(['A', 'C']): 0.1,
frozenset(['B', 'C']): 0.01,
frozenset(['A', 'B', 'C']): 0.001,
}.get(key, 0.0)

test_data = SupportRecord(frozenset(['A', 'B', 'C']), 0.001)
results = list(gen_ordered_statistics(transaction_manager, test_data))
eq_(results, [
OrderedStatistic(
frozenset([]),
frozenset(['A', 'B', 'C']),
0.001 / 1.0,
0.001 / 1.0 / 0.001,
),
OrderedStatistic(
frozenset(['A']),
frozenset(['B', 'C']),
0.001 / 0.8,
0.001 / 0.8 / 0.01,
),
OrderedStatistic(
frozenset(['B']),
frozenset(['A', 'C']),
0.001 / 0.4,
0.001 / 0.4 / 0.1,
),
OrderedStatistic(
frozenset(['C']),
frozenset(['A', 'B']),
0.001 / 0.2,
0.001 / 0.2 / 0.2,
),
OrderedStatistic(
frozenset(['A', 'B']),
frozenset(['C']),
Expand Down

0 comments on commit 0a7a533

Please sign in to comment.