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]))

上記のコードは、すべての条件を処理するわけではありません..

4

1 に答える 1