buildConditionalTransactions function
Builds weighted conditional transactions from conditional pattern bases.
This function takes the raw paths found in the tree (the pattern bases) and filters and sorts them according to the frequent items found in the conditional context. This prepares the data needed to build a conditional FP-Tree.
Implementation
Map<List<int>, int> buildConditionalTransactions(
Map<List<int>, int> conditionalPatternBases,
Map<int, int> conditionalFrequentItems,
) {
final weightedTransactions = <List<int>, int>{};
for (final entry in conditionalPatternBases.entries) {
final path = entry.key;
final count = entry.value;
final orderedPath =
path
.where((item) => conditionalFrequentItems.containsKey(item))
.toList()
..sort((a, b) {
final compare = conditionalFrequentItems[b]!.compareTo(
conditionalFrequentItems[a]!,
);
if (compare == 0) {
// Stable sort based on item ID
return a.compareTo(b);
}
return compare;
});
if (orderedPath.isNotEmpty) {
weightedTransactions[orderedPath] = count;
}
}
return weightedTransactions;
}