Каков наилучший способ реализации алгоритма Apriori в пандах? До сих пор я застрял в преобразовании извлечения шаблонов, использующих для циклов. Все из цикла for не работает. Есть ли в пандах векторизованный способ?лучший способ реализовать Apriori в python pandas
import pandas as pd
import numpy as np
trans=pd.read_table('output.txt', header=None,index_col=0)
def apriori(trans, support=4):
ts=pd.get_dummies(trans.unstack().dropna()).groupby(level=1).sum()
#user input
collen, rowlen =ts.shape
#max length of items
tssum=ts.sum(axis=1)
maxlen=tssum.loc[tssum.idxmax()]
items=list(ts.columns)
results=[]
#loop through items
for c in range(1, maxlen):
#generate patterns
pattern=[]
for n in len(pattern):
#calculate support
pattern=['supp']=pattern.sum/rowlen
#filter by support level
Condit=pattern['supp']> support
pattern=pattern[Condit]
results.append(pattern)
return results
results =apriori(trans)
print results
Когда я вставляю это с поддержкой 3
a b c d e
0
11 1 1 1 0 0
666 1 0 0 1 1
10101 0 1 1 1 0
1010 1 1 1 1 0
414147 0 1 1 0 0
10101 1 1 0 1 0
1242 0 0 0 1 1
101 1 1 1 1 0
411 0 0 1 1 1
444 1 1 1 0 0
он должен вывести что-то вроде
Pattern support
a 6
b 7
c 7
d 7
e 3
a,b 5
a,c 4
a,d 4
Ваше возвращение в неправильном месте и для п в LEN (шаблон) неправильно слишком .... –
@AndyHayden Первый был из вставляя ошибки, когда я делал это вручную длина рисунок не потому что я не понял, как создавать комбинации шаблонов, такие как a, b; а, с; или a, b, c – user3084006
Как определяется поддержка? У меня было предположение, но оно не соответствует вашему значению a, d (я думал, что это будет 4, но вы говорите, что это 3) – DSM