0

比較下面是先驗關聯規則與車

import csv 
import apriori 

with open('dataset.csv', 'r') as fp: 
    reader = csv.reader(fp) 
    lst1,lst2 = [],[] 
    for row in reader: 
    others,last = row[:-1],row[-1] 
    lst1.append(others) 
    lst2.append(last) 

L,suppData=apriori.apriori(lst1, minSupport =0.3) 
rules = apriori.generateRules(L,suppData, minConf = 0.3) 
rules = sorted(rules, key=lambda x: x[2], reverse=True) 

以下一些簡單的代碼數據集

p1,p2,p3,A 
p1,p2,B 
p1,p2,C 
p1,p2,D 
p2,p3,E 
p1,p2,p3,F 
p1,p3,G 

規則輸出看起來像

[(frozenset(['p1']), frozenset(['p2']), 0.8333333333333334), (frozenset(['p2']), frozenset(['p1']), 0.8333333333333334), (frozenset(['p3']), frozenset(['p2']), 0.75), (frozenset(['p3']), frozenset(['p1']), 0.75), (frozenset(['p2']), frozenset(['p3']), 0.5), (frozenset(['p1']), frozenset(['p3']), 0.5)] 

什麼是正確的,並有效的方式來查看產品購物車,這是一個逗號分隔的字符串,如[p1,p2],並推薦下2個最好的產品。

cart = ['p1','p2'] 
recommend=[] 
for fz in rules: 
    if(",".join(sorted(fz[0])) == ",".join(cart)): 
     recommend.extend(sorted(fz[1])) 

上面的代碼不處理所有條件..

回答

0

遍歷所有的關聯規則。得到那些包含p1和p2作爲規則左邊站點頻繁項集的關聯規則,即[p1,p2-> x]。其中x是另一個頻繁項目集,最大兩個項目。您可以使用關聯規則,如[p1 - > x],[p2 - > x]。現在從這些關聯規則中獲得最大支持和最大信心。最好的情況下,具有最大支持度和置信度的關聯規則就是這種分割規則[p1,p2-> q1,q2]。 q1,q2是您推薦的產品。