Untitled
python
13 days ago
12 kB
1
Indexable
Never
def mining(global_list,minutil,hup): conditional_item_Obj = {} #print("** mining gl *** \n",global_list.keys()) # for each dui in GL for item in global_list.keys(): #print("for item in mining ",item,"utility ",global_list[item].utility,"remaining utility ",global_list[item].remainingUtility) # check if item is an hup if global_list[item].utility + global_list[item].remainingUtility >= minutil: if global_list[item].utility >= minutil: hup.append(itemset_list + [item]) #else: continue ''' #itemset_list.append(item) # prefix # create conditional dui item conditional_item = itemset(itemset_list+[item]) # {_D} print("conditional_item ",conditional_item.itemsetname) conditional_item.utility = global_list[item].utility conditional_item.nextItemList = global_list[item].nextItemList conditional_item.nextItemUtilityList = global_list[item].nextItemUtilityList conditional_item_Obj[str(itemset_list+[item]).strip("[]")] = conditional_item ''' # for each entry e in cdui(x) for i in range(len(global_list[item].nextItemList)): #if global_list[item].nextItemList[i] == None: # create new entry into cdui(x ) #conditional_item.nextItemList.append(global_list[item].nextItemList[i]) #conditional_item.nextItemUtilityList = np. # for each entry connected to e if global_list[item].nextItemList[i] is None: continue nextItemListIndex = global_list[item].nextItemList[i][1] nextItem = global_list[item].nextItemList[i][0] # c if global_list[item].utility + itemObjRef[nextItem].nextItemUtilityList[nextItemListIndex] >= minutil: # if remaining util negative , cont if global_list[item].remainingUtility - itemObjRef[nextItem].nextItemUtilityList[nextItemListIndex]<0: continue itemli = itemStrToList(item) conditional_item_Obj[item+"-"+str(nextItem)] = itemset(itemli+[nextItem],0,0) #print(global_list[item].nextItemUtilityList,global_list[item].fuzzy_utility_list) glItmeutility = global_list[item].nextItemUtilityList[i]/global_list[item].fuzzy_utility_list[i] nextItemUtil = itemObjRef[nextItem].nextItemUtilityList[nextItemListIndex]/itemObjRef[nextItem].fuzzy_utility_list[nextItemListIndex] minfuzz = min(global_list[item].fuzzy_utility_list[i],itemObjRef[nextItem].fuzzy_utility_list[nextItemListIndex]) conditional_item_Obj[item+"-"+str(nextItem)].utility = minfuzz*(glItmeutility + nextItemUtil) #print("conditional_item_Obj[item+-+str(nextItem)] ",conditional_item_Obj[item+"-"+str(nextItem)].itemsetname," utility ",conditional_item_Obj[item+"-"+str(nextItem)].utility) conditional_item_Obj[item+"-"+str(nextItem)].remainingUtility = global_list[item].remainingUtility - itemObjRef[nextItem].nextItemUtilityList[nextItemListIndex] conditional_item_Obj[item+"-"+str(nextItem)].nextItemList = itemObjRef[nextItem].nextItemList[nextItemListIndex:] conditional_item_Obj[item+"-"+str(nextItem)].nextItemUtilityList = itemObjRef[nextItem].nextItemUtilityList[nextItemListIndex:] conditional_item_Obj[item+"-"+str(nextItem)].fuzzy_utility_list = itemObjRef[nextItem].fuzzy_utility_list[nextItemListIndex:] ''' while global_list[nextItem].nextItemList[nextItemListIndex] != None: # if cdui list for x exist in cdui list : if conditional_item.itemsetname+ [nextItem] not in conditional_item_list: conditional_item_list.append(conditional_item.itemsetname+ [nextItem]) # DA conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")] = itemset(conditional_item.itemsetname+ [nextItem],0,0) # insert new item in DA print(" Da ",conditional_item.itemsetname+ [nextItem]) conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")].nextItemList.append(global_list[nextItem].nextItemList[nextItemListIndex]) # next item C if conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")].nextItemUtilityList == None: conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")].nextItemUtilityList = np.array([global_list[nextItem].nextItemUtilityList[nextItemListIndex]+global_list[item].nextItemUtilityList[i]]) else: conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")].nextItemUtilityList = np.append(conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem])].nextItemUtilityList,global_list[nextItem].nextItemUtilityList[nextItemListIndex]+global_list[item].nextItemUtilityList[i]) # update DU value of CDUI x conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")].utility += global_list[nextItem].nextItemUtilityList[nextItemListIndex]+global_list[item].nextItemUtilityList[i] # update next item index nextItemListIndex = global_list[nextItem].nextItemList[nextItemListIndex][1] nextItem = global_list[nextItem].nextItemList[nextItemListIndex][0] if global_list[nextItem].nextItemList[nextItemListIndex] == None: if conditional_item.itemsetname+ [nextItem] not in conditional_item_list: conditional_item_list.append(conditional_item.itemsetname+ [nextItem]) # DA conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")] = itemset(conditional_item.itemsetname+ [nextItem],0,0) # insert new item in DA print(" Da ",conditional_item.itemsetname+ [nextItem]) conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")].nextItemList.append(None) # next item C if conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")].nextItemUtilityList == None: conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")].nextItemUtilityList = np.array([global_list[nextItem].nextItemUtilityList[nextItemListIndex]+global_list[item].nextItemUtilityList[i]]) else: conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")].nextItemUtilityList = np.append(conditional_item_Obj[str(conditional_item.itemsetname+ [nextItem]).strip("[]")].nextItemUtilityList,global_list[nextItem].nextItemUtilityList[nextItemListIndex]+global_list[item].nextItemUtilityList[i]) #update dru value for key in conditional_item_Obj.keys(): if str(conditional_item.itemsetname).strip("[]") in key: if conditional_item_Obj[key.strip("[]")].nextItemList[0]!= None: conditional_item_Obj[key.strip("[]")].remainingUtility+=global_list[conditional_item_Obj[key.strip("[]")].nextItemList[0][0]].nextItemUtilityList[conditional_item_Obj[key.strip("[]")].nextItemList[0][1]] print("dru for ",key," is ",conditional_item_Obj[key.strip("[]")].remainingUtility) break conditional_item_Obj.pop(str(itemset_list+[item]).strip("[]")) ''' if len(conditional_item_Obj)>0: #print("mining recur \n cond item ",conditional_item_Obj.keys(),"\n") mining(conditional_item_Obj,minutil,hup) conditional_item_Obj = {} #print("returning ") #break #itemObjRef[(0,0)] = a,0 obj def mining_start(itemObjRef,minutil,hup): conditional_item_Obj = {} for item in itemObjRef.keys(): #print(" for item ",item,"utility ",itemObjRef[item].utility," remaining utility ",itemObjRef[item].remainingUtility) if itemObjRef[item].utility + itemObjRef[item].remainingUtility >= minutil: if itemObjRef[item].utility >= minutil: hup.append([item]) else : continue #print(" doing mining for ",item) for i in range(len(itemObjRef[item].nextItemList)): if itemObjRef[item].nextItemList[i] is None: continue nextItemListIndex = itemObjRef[item].nextItemList[i][1] nextItem = itemObjRef[item].nextItemList[i][0] # A while nextItem is not None: if str(item)+"-"+str(nextItem) not in conditional_item_Obj.keys(): # DA #print(" da ",str(item)+"-"+str(nextItem)) itemUtil = itemObjRef[item].nextItemUtilityList[i]/itemObjRef[item].fuzzy_utility_list[i] nextItemUtil = itemObjRef[nextItem].nextItemUtilityList[nextItemListIndex]/itemObjRef[nextItem].fuzzy_utility_list[nextItemListIndex] minfuzz = min(itemObjRef[item].fuzzy_utility_list[i],itemObjRef[nextItem].fuzzy_utility_list[nextItemListIndex]) conditional_item_Obj[str(item)+"-"+str(nextItem)] = itemset([item]+[nextItem],minfuzz*(itemUtil+nextItemUtil),0) #print(" da ",str(item)+"-"+str(nextItem)," cond obj ",conditional_item_Obj[str(item)+"-"+str(nextItem)].itemsetname) prevItem = nextItem #a prevItemIndex = nextItemListIndex if itemObjRef[nextItem].nextItemList[nextItemListIndex] is None: conditional_item_Obj[str(item)+"-"+str(nextItem)].nextItemList.append(None) if conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemUtilityList is not None: conditional_item_Obj[str(item)+"-"+str(prevItem)].fuzzy_utility_list.append(minfuzz) conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemUtilityList = np.append(conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemUtilityList,itemObjRef[prevItem].nextItemUtilityList[prevItemIndex]+itemObjRef[item].nextItemUtilityList[i]) else: conditional_item_Obj[str(item)+"-"+str(prevItem)].fuzzy_utility_list =[minfuzz] conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemUtilityList = np.array([itemObjRef[prevItem].nextItemUtilityList[prevItemIndex]+itemObjRef[item].nextItemUtilityList[i]]) #print(" conditional item ",conditional_item_Obj[str(item)+"-"+str(prevItem)].itemsetname," next item ",conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemList," next item utility ",conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemUtilityList) break else: nextItemListIndex = itemObjRef[prevItem].nextItemList[prevItemIndex][1] nextItem = itemObjRef[prevItem].nextItemList[prevItemIndex][0] #c conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemList.append([nextItem,nextItemListIndex]) # next item C if conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemUtilityList is None: conditional_item_Obj[str(item)+"-"+str(prevItem)].fuzzy_utility_list =[minfuzz] conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemUtilityList = np.array([itemObjRef[prevItem].nextItemUtilityList[prevItemIndex]+itemObjRef[item].nextItemUtilityList[i]]) else: conditional_item_Obj[str(item)+"-"+str(prevItem)].fuzzy_utility_list.append(minfuzz) conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemUtilityList = np.append(conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemUtilityList,itemObjRef[prevItem].nextItemUtilityList[prevItemIndex]+itemObjRef[item].nextItemUtilityList[i]) #print(" conditional item ",conditional_item_Obj[str(item)+"-"+str(prevItem)].itemsetname," next item ",conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemList," next item utility ",conditional_item_Obj[str(item)+"-"+str(prevItem)].nextItemUtilityList) #update dru for key in conditional_item_Obj.keys(): if conditional_item_Obj[key].nextItemList[0]!= None: conditional_item_Obj[key].remainingUtility+=itemObjRef[conditional_item_Obj[key.strip("[]")].nextItemList[0][0]].nextItemUtilityList[conditional_item_Obj[key].nextItemList[0][1]] #print("dru for ",key," is ",conditional_item_Obj[key.strip("[]")].remainingUtility) #if nextItem == None: #print("mining 2 itemsets : ,",conditional_item_Obj.keys()) mining(conditional_item_Obj,minutil,hup) conditional_item_Obj = {} #break # do for 1 trx #break