Skip to content

Commit

Permalink
Merge pull request #272 from UdayLab/fix-bugs
Browse files Browse the repository at this point in the history
Fix bugs
  • Loading branch information
udayRage authored Nov 17, 2023
2 parents 0442af8 + 8f9e5b3 commit 5dd96e9
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 27 deletions.
24 changes: 18 additions & 6 deletions PAMI/fuzzyCorrelatedPattern/basic/FCPGrowth.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,8 @@ def _compareItems(self, o1: _FFList, o2: _FFList) -> int:
"""
compare = self._mapItemSum[o1.item] - self._mapItemSum[o2.item]
if compare == 0:
return int(o1.item) - int(o2.item)
# return int(o1.item) - int(o2.item)
return 1
else:
return compare

Expand Down Expand Up @@ -407,9 +408,9 @@ def _creatingItemSets(self) -> None:
line = line.split("\n")[0]
parts = line.split(":")
parts[0] = parts[0].strip()
parts[2] = parts[2].strip()
parts[1] = parts[1].strip()
items = parts[0].split(self._sep)
quantities = parts[2].split(self._sep)
quantities = parts[1].split(self._sep)
self._transactions.append([x for x in items])
self._fuzzyValues.append([x for x in quantities])
else:
Expand All @@ -419,7 +420,7 @@ def _creatingItemSets(self) -> None:
line = line.split("\n")[0]
parts = line.split(":")
items = parts[0].split()
quantities = parts[2].split()
quantities = parts[1].split()
self._transactions.append([x for x in items])
self._fuzzyValues.append([x for x in quantities])
except IOError:
Expand All @@ -437,7 +438,7 @@ def startMine(self) -> None:
quantities = self._fuzzyValues[tr]
for i in range(0, len(items)):
item = items[i]
regions = _Regions(item, int(quantities[i]), 3, self._mapItemRegionSum)
regions = _Regions(item, float(quantities[i]), 3, self._mapItemRegionSum)
if item in self._mapItemsLowSum.keys():
low = self._mapItemsLowSum[item]
low += regions.low
Expand Down Expand Up @@ -492,7 +493,7 @@ def startMine(self) -> None:
for i in range(0, len(items)):
pair = _Pair()
pair.item = items[i]
regions = _Regions(pair.item, int(quantities[i]), 3, self._temp)
regions = _Regions(pair.item, float(quantities[i]), 3, self._temp)
item = pair.item
if self._mapItemSum[item] >= self._minSup:
if self._mapItemRegions[pair.item] == "L":
Expand Down Expand Up @@ -686,8 +687,19 @@ def printResults(self) -> None:
print("Total Memory in RSS", self.getMemoryRSS())
print("Total ExecutionTime in ms:", self.getRuntime())

def main():
inputFile = 'https://u-aizu.ac.jp/~udayrage/datasets/fuzzyDatabases/Fuzzy_T10I4D100K.csv'

minimumSupportCount=1200 #Users can also specify this constraint between 0 to 1.
ratioExample=0.8
seperator='\t'

obj = FCPGrowth(inputFile, minimumSupportCount,ratioExample,seperator) #initialize
obj.startMine()


if __name__ == "__main__":
main()
_ap = str()
if len(_ab._sys.argv) == 5 or len(_ab._sys.argv) == 6:
if len(_ab._sys.argv) == 6:
Expand Down
69 changes: 48 additions & 21 deletions PAMI/highUtilityGeoreferencedFrequentPattern/basic/SHUFIM.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@ def createItemSets(self, datasetPath):
"""
Storing the complete transactions of the database/input file in a database variable
"""
pmuString = None
if isinstance(datasetPath, _ab._pd.DataFrame):
utilities, data, utilitySum, pmuString = [], [], [], []
if datasetPath.empty:
Expand All @@ -248,8 +249,9 @@ def createItemSets(self, datasetPath):
itemsString = [x for x in itemsString if x]
utilityString = trans_list[2].strip().split(self.sep)
utilityString = [x for x in utilityString if x]
pmuString = trans_list[3].strip().split(self.sep)
pmuString = [x for x in pmuString if x]
if len(trans_list) == 4:
pmuString = trans_list[3].strip().split(self.sep)
pmuString = [x for x in pmuString if x]
self.transactions.append(self.createTransaction(itemsString, utilityString, transactionUtility, pmuString))
else:
try:
Expand All @@ -261,8 +263,9 @@ def createItemSets(self, datasetPath):
itemsString = [x for x in itemsString if x]
utilityString = trans_list[2].strip().split(self.sep)
utilityString = [x for x in utilityString if x]
pmuString = trans_list[3].strip().split(self.sep)
pmuString = [x for x in pmuString if x]
if len(trans_list) == 4:
pmuString = trans_list[3].strip().split(self.sep)
pmuString = [x for x in pmuString if x]
self.transactions.append(
self.createTransaction(itemsString, utilityString, transactionUtility, pmuString))
except IOError:
Expand Down Expand Up @@ -301,7 +304,10 @@ def createTransaction(self, items, utilities, utilitySum, pmustring):
self.maxItem = itemInt
items.append(itemInt)
utilities.append(int(utilityString[idx]))
pmus.append(int(pmuString[idx]))
if pmuString != None:
pmus.append(int(pmuString[idx]))
if pmuString == None:
pmus = None
return _Transaction(items, utilities, transactionUtility, pmus)

def getMaxItem(self):
Expand Down Expand Up @@ -886,10 +892,18 @@ def _useUtilityBinArrayToCalculateLocalUtilityFirstTime(self, dataset):
for idx, item in enumerate(transaction.getItems()):
self._singleItemSetsSupport[item] += 1
self._singleItemSetsUtility[item] += transaction.getUtilities()[idx]
pmu = transaction.getUtilities()[idx]
if item in self._Neighbours:
neighbors = self._Neighbours[item]
for idx, item in enumerate(transaction.getItems()):
if item in neighbors:
pmu += transaction.getUtilities()[idx]
if item in self._utilityBinArrayLU:
self._utilityBinArrayLU[item] += transaction.getPmus()[idx]
# self._utilityBinArrayLU[item] += transaction.getPmus()[idx]
self._utilityBinArrayLU[item] += pmu
else:
self._utilityBinArrayLU[item] = transaction.getPmus()[idx]
# self._utilityBinArrayLU[item] = transaction.getPmus()[idx]
self._utilityBinArrayLU[item] = pmu

def getPatternsAsDataFrame(self):
"""Storing final patterns in a dataframe
Expand Down Expand Up @@ -959,19 +973,32 @@ def printResults(self):
print("Total Memory in RSS", self.getMemoryRSS())
print("Total ExecutionTime in seconds:", self.getRuntime())

def main():
inputFile = '/home/nakamura/workspace/labwork/PAMI/PAMI/highUtilityGeoreferencedFrequentPattern/basic/mushroom_utility_spmf.txt'
neighborFile = '/home/nakamura/workspace/labwork/PAMI/PAMI/highUtilityGeoreferencedFrequentPattern/basic/mushroom_utility_spmf.txt'

minUtilCount = 10000
minSup = 100
seperator = ' '
obj = SHUFIM(iFile=inputFile, nFile=neighborFile, minUtil=minUtilCount, minSup=minSup, sep=seperator) #initialize
obj.startMine()
obj.printResults()
print(obj.getPatterns())


if __name__ == '__main__':
_ap = str()
if len(_ab._sys.argv) == 6 or len(_ab._sys.argv) == 7:
if len(_ab._sys.argv) == 7:
_ap = SHUFIM(_ab._sys.argv[1], _ab._sys.argv[3], int(_ab._sys.argv[4]), _ab._sys.argv[5], _ab._sys.argv[6])
if len(_ab._sys.argv) == 6:
_ap = SHUFIM(_ab._sys.argv[1], _ab._sys.argv[3], int(_ab._sys.argv[4]), _ab._sys.argv[5])
_ap.startMine()
print("Total number of Spatial High Utility Frequent Patterns:", len(_ap.getPatterns()))
_ap.save(_ab._sys.argv[2])
print("Total Memory in USS:", _ap.getMemoryUSS())
print("Total Memory in RSS", _ap.getMemoryRSS())
print("Total ExecutionTime in seconds:", _ap.getRuntime())
else:
print("Error! The number of input parameters do not match the total number of parameters provided")
main()
# _ap = str()
# if len(_ab._sys.argv) == 6 or len(_ab._sys.argv) == 7:
# if len(_ab._sys.argv) == 7:
# _ap = SHUFIM(_ab._sys.argv[1], _ab._sys.argv[3], int(_ab._sys.argv[4]), _ab._sys.argv[5], _ab._sys.argv[6])
# if len(_ab._sys.argv) == 6:
# _ap = SHUFIM(_ab._sys.argv[1], _ab._sys.argv[3], int(_ab._sys.argv[4]), _ab._sys.argv[5])
# _ap.startMine()
# print("Total number of Spatial High Utility Frequent Patterns:", len(_ap.getPatterns()))
# _ap.save(_ab._sys.argv[2])
# print("Total Memory in USS:", _ap.getMemoryUSS())
# print("Total Memory in RSS", _ap.getMemoryRSS())
# print("Total ExecutionTime in seconds:", _ap.getRuntime())
# else:
# print("Error! The number of input parameters do not match the total number of parameters provided")

0 comments on commit 5dd96e9

Please sign in to comment.