['0',.....,'10']
과 같이 문자열로 주어진 시퀀스 목록이 있습니다. itertools.combinations
을 사용하여 ('0','2')
과 같은 2의 조합을 얻으면 '10'
이 단일 항목으로 계산되지 않는다는 것을 알았습니다. 나는. ('2','10')
이 표시되지 않으며 대신 ('2','1','0')
또는 10
과의 조합이 표시됩니다. 1,0
으로 간주되고 조합이 형성됩니다. 이 문제를 해결해 주셔서 감사합니다. 형식을 int로 변환하는 것을 고려했지만 길이 2 조합을 형성 한 후에 (1,2,3)
과 같은 더 큰 조합을 계속 형성하려고합니다.'10 'itertools 조합을 사용할 때 문자열이 1,0로 나뉘어집니다.
def frequentPattern(data, minsup):
frequentSets = []
itemset = {}
for line in data:
for c in line.replace(',','').split():
if itemset.get(c)==None:
itemset[c]=0
itemset[c]+=1
k = 1
while itemset != {}:
prevCandidates = []
print itemset.keys()
for i in itemset.keys():
print i
if itemset[i] >= minsup:
prevCandidates.append(i)
if i not in frequentSets:
frequentSets.append(i)
candidates = []
for i in itertools.combinations(prevCandidates,2):
cell = tuple(set(i[0]+i[1]))
#print cell
#cell = tuple(sorted(cell))
if len(cell)<=(k+1):
candidates.append(cell)
candidates = list(set(candidates))
itemset = {}
for line in data:
for cell in candidates:
if set(cell) <= set(tuple(line.replace(',','').split())):
if itemset.get(cell)==None:
itemset[cell]=0
itemset[cell]+=1
k = k+1
return frequentSets
로서는 문제가 셀 = 튜플 (SET (I [0] + I [1])) 라인으로 언급했다. 주위에 방법이 보이니? 이 선의 목적은 길이가 2보다 큰 조합을 만드는 것이 었습니다.
공유 할 수 있다면 유용 할 것입니다. 실제로 가지고있는 코드 – oScarDiAnno
이 문제를 재현 할 수 없습니다. 'list ((8,11)에서 x에 대해 str (x)를 사용하면, 2))'는'[('8 ','9 '), ('8 ', '10 '), ('9 ','10 ')]' – James
이미지 올리기가 좋지 않습니다. 우리는 그것을 다시 시도해야합니까? 컷 앤 페이스트! –