Esempio n. 1
0
    def test_run(self):
        ap = Apriori(self.tidList, 63)
        result = ap.run()
        sort_f = lambda x: (x.support, x.item)
        result.sort(key=sort_f)
        self.targetSet.sort(key=sort_f)
        self.assertListEqual(result, self.targetSet)

        restrict_items = ["Bagel", "Cheese", "Milk"]
        ap_restrict = Apriori(self.tidList, 63, restrict_items=restrict_items)
        result_restrict = ap_restrict.run()
        result_restrict.sort(key=sort_f)
        target_restrict = list(
            filter(lambda x: x.contains(restrict_items), self.targetSet))
        self.assertListEqual(result_restrict, target_restrict)
Esempio n. 2
0
class AprioriTestCase(unittest.TestCase):
  def setUp(self):
    _list = [
      [1, 2, 3],
      [1, 4],
      [4, 5],
      [1, 2, 4],
      [1, 2, 6, 4, 3],
      [2, 6, 3],
      [2, 3, 6],
    ]

    #trans list to Collection
    tem_list = Collection()
    for l in _list:
      tem = Collection()
      tem_list.append(tem)
      for m in l:
        tem.append(m)
    self.apri = Apriori(tem_list, 0.3, 0.8)

  def testInit_pass(self):
    test_console('init_pass')
    self.apri.init_pass()
    print '.. self.apri.C : '
    print self.apri.C


  def testCadidate_gen(self):
    temF = [
      [1, 2, 3],
      [2, 3, 4],
      [4, 5, 6],
      [1, 2, 3, 4],
      [6, 7, 8],
    ]
    collections = self.apri.Cadidate_gen(temF)
    print '.. temF'
    print temF
    print '.. Cadidate_gen'
    print collections
    
  def testRun(self):
    test_console('run')
    self.apri.run()
Esempio n. 3
0
def run(database, type, min_support=0.05, min_confidence=0.5):
    if type == 'basic':
        if database == 'Acme-Supermarket':
            preprocessing = AcmeSupermarket(acme_filepath)
            preprocessing.load()
            algorithm = Apriori(min_support, min_confidence, acme_filepath)
            rules = algorithm.run()
            preprocessing.save_rules(rules)
        elif database == 'Movielens':
            preprocessing = Movielens(movie_filepath)
            preprocessing.load()
            algorithm = Apriori(min_support, min_confidence, movie_filepath)
            rules = algorithm.run()
            # Print?
        else:
            preprocessing = Retails(retails_filepath)
            preprocessing.load()
            algorithm = Apriori(min_support, min_confidence, retails_filepath)
            rules = algorithm.run()
            # print?
    else:
        if database == 'Acme-Supermarket':
            preprocessing = AcmeSupermarket(acme_filepath)
            preprocessing.load()
            algorithm = AprioriEnhanced(min_support, min_confidence,
                                        acme_filepath)
            rules = algorithm.run()
            preprocessing.save_rules(rules)
        elif database == 'Movielens':
            preprocessing = Movielens(movie_filepath)
            preprocessing.load()
            algorithm = AprioriEnhanced(min_support, min_confidence,
                                        movie_filepath)
            rules = algorithm.run()
            # Print?
        else:
            preprocessing = Retails(retails_filepath)
            preprocessing.load()
            algorithm = AprioriEnhanced(min_support, min_confidence,
                                        retails_filepath)
            rules = algorithm.run()
Esempio n. 4
0
# -*- coding: utf-8 -*-
from apriori import Apriori, ImprovedApriori

with open('after.csv', 'r') as fp:
    lines = fp.readlines()
dataSet3 = []
for line in lines:
    line = line.rstrip()
    dataSet3.append(line.split(","))
minsup = 0.005
minconf = 0.5

if __name__ == '__main__':
    # test1
    apriori = Apriori(dataSet3, minsup, minconf)
    apriori.run()
    apriori.print_frequent_itemset()
    apriori.print_rule()
def apriori():
    session.rollback()
    users = session.query(User).all()

    favs = list()
    for user in users:
        favIds = list()
        favorites = session.query(Favorite).filter_by(
            user_mail=user.mail).all()
        for favorite in favorites:
            favIds.append(str(favorite.recipe_id))
        favs.append(favIds)

    minsup = 0.4
    minconf = 0.4

    apriori = Apriori(favs, minsup, minconf)
    apriori.run()
    apriori.print_frequent_itemset()
    result = apriori.print_rule()

    # print(result)

    apriori_advices = list()

    for res in result:
        x = res.split(' ==> ')
        # print(len(x[0]))
        if len(x[0]) <= 2:
            # print(x[0])
            apriori_advices.append(x[0])
            apriori_advices.append(x[1])

    # print(apriori_advices)

    key = list()
    value = list()

    i = 0
    while i < len(apriori_advices):
        key.append(int(apriori_advices[i]))
        value.append(int(apriori_advices[i + 1]))
        i += 4

    favorites = session.query(Favorite).filter_by(user_mail=g.user.mail).all()
    print(favorites)
    favoriteIds = list()
    for favorite in favorites:
        favoriteIds.append(favorite.recipe_id)

    print(favoriteIds)
    print(key)
    adviceIds = list()
    i = 0
    if (len(favoriteIds) > 0):
        while i < len(key):
            if contains(fs, key[i]) != True:
                adviceIds.append(value[i])
            i += 1

    print(adviceIds)
    adviceIds = list(set(adviceIds))
    print(adviceIds)
    advices = session.query(Recipe).filter(Recipe.id.in_(adviceIds)).all()

    return jsonify([advice.serialize for advice in advices]), 201
Esempio n. 6
0
        keys = set()
        transactionData = list()
        for line in f:
            line = str(line).replace("\n", "")
            transactionItems = str(line).split(",")
            transactionData.append(transactionItems)

    return transactionData


# dataset = [
#     ['bread', 'milk'],
#     ['bread', 'diaper', 'beer', 'egg'],
#     ['milk', 'diaper', 'beer', 'cola'],
#     ['bread', 'milk', 'diaper', 'beer'],
#     ['bread', 'milk', 'diaper', 'cola'],
# ]

dataset = getDataset()

minsup = 0.01
minconf = 0.4

ap = Apriori(dataset, minsup, minconf)
# run algorithm
ap.run()
# print out frequent itemset
ap.print_frequent_itemset()
# print out rules
ap.print_rule()