예제 #1
0
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
예제 #2
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()
예제 #3
0
파일: asd.py 프로젝트: keepqoing/oddments
        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()