You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PAttern MIning (PAMI) is a Python library containing several algorithms to discover user interest-based patterns in a wide-spectrum of datasets across multiple computing platforms. Useful links to utilize the services of this library were provided below:
Version 2026.10.06.2:
Since Version 2026.07.29, the following updates have been made:
Added BinaryApriori, BinaryECLAT, and BinaryFPGrowth to mine frequent patterns directly from binary (0/1) databases.
Added MSECLAT, a vertical frequent pattern miner with an individual minimum support threshold for each item.
Added MFFIMiner and its CUDA implementation, cuMFFIMiner, for mining multiple fuzzy frequent itemsets. Both retain all frequent regions and allow at most one region of each item in a pattern.
Added the generateBinaryDatabase and BinaryDatabase synthetic binary database generators.
Fixed custom separator handling in CFPGrowth, standardized pattern formatting and saved output in CFPGrowthPlus, and reset shared mining state in both algorithms between runs.
Fixed double conversion of minimum support and neighbor selection in GPFPMiner, skipped blank transaction and neighborhood rows, reset its transaction counter between runs, and removed a duplicate command-line mining call.
Fixed item ordering for equal-support items in FPGrowth and retained single-item transactions in MaxFPGrowth.
Preserved configured minimum support thresholds between mining runs in Apriori, Aprioribitset, ECLAT, ECLATDiffset, ECLATbitset, FPGrowth, CHARM, GenMax, MaxMiner, MaxFPGrowth, PFECLAT, and PFPGrowth. PFECLAT and PFPGrowth also preserve their configured maximum periodicity thresholds.
Cleared previous patterns on each mine() call in Apriori, ECLAT, FPGrowth, and PFPGrowth.
Optimized Apriori by reusing prefix and parent intersections, ECLAT by carrying prefix transaction IDs through recursion, and FPGrowth by aggregating identical filtered transaction paths.
Added the MFFIMiner user manual, Sphinx API and usage documentation, notebook examples, and README links for the CPU and CUDA miners.
Moved Sphinx and sphinx-rtd-theme from core dependencies into the docs and all extras, removed the duplicate validators requirement, and updated the package version.
Updated Read the Docs to install PAMI with the docs extra.
Total number of algorithms: 140
Version 2026.07.29:
In this latest version, the following updates have been made:
Added four new pattern-mining algorithms: CorrelatedECLAT (a vertical correlated pattern miner), FTECLAT (a vertical fault-tolerant frequent pattern miner), and two new maximal-pattern miners, GenMax and MaxMiner.
Added CUDA implementations for the fuzzy pattern-mining algorithms FFIMiner, FPFPMiner, F3PMiner, FCPGrowth, FFSPMiner, and FGPFPMiner, and for CMine (coverage pattern mining).
Fixed a bug in CMine where the first item of a transaction was dropped, and optimized its bitset construction.
Made the plotGraphs() charts in TransactionalDatabase interactive, with hover tooltips showing the item name and value at each point.
Fixed a crash in the plotGraphs() method of the database statistics classes, and in the underlying line-graph and pattern-visualization utilities.
Version 2026.07.01:
In this latest version, the following updates have been made:
Added a k (maximum-cardinality) parameter to the fuzzy pattern-mining algorithms -- FFIMiner, FPFPMiner, FFSPMiner, FGPFPMiner, FCPGrowth, and F3PMiner -- to control how many top fuzzy terms are retained per item during mining. k=1 (default) keeps only the highest-support term per item, k=2 keeps the top two, and k<=0 disables the filter (mines every term).
Added two new visualization utilities for association analysis: an item co-occurrence heatmap and an association-rule scatter plot.
Fixed the lattice traversal in SpatialECLAT so that itemsets larger than size 2 are mined correctly.
Optimized the following pattern mining algorithms: SpatialECLAT, FSPGrowth, ECLAT, ECLATDiffset, FPGrowth, FFIMiner, PFECLAT, GPFgrowth, PPF_DFS, PPP_ECLAT, PPPGrowth, Aprioribitset, ECLATbitset, and PFPGrowth.
Fixed duplicate mining calls and output-path issues in the command-line entry points of Apriori, ECLAT, and FPGrowth.
Total number of algorithms: 123
Features
✅ Tested to the best of our possibility
🔋 Highly optimized to our best effort, light-weight, and energy-efficient
👀 Proper code documentation
🍼 Ample examples of using various algorithms at ./notebooks folder
🤖 Works with AI libraries such as TensorFlow, PyTorch, and sklearn.
⚡️ Supports Cuda and PySpark
🖥️ Operating System Independence
🔬 Knowledge discovery in static data and streams
🐎 Snappy
🐻 Ease of use
Maintenance
Installation
Installing basic pami package (recommended)
pip install pami
Installing pami package in a GPU machine that supports CUDA
pip install 'pami[gpu]'
Installing pami package in a distributed network environment supporting Spark
pip install 'pami[spark]'
Installing pami package for developing purpose
pip install 'pami[dev]'
Installing complete Library of pami
pip install 'pami[all]'
Upgradation
pip install --upgrade pami
Uninstallation
pip uninstall pami
Information
pip show pami
Try your first PAMI program
$ python
# first import pami fromPAMI.frequentPattern.basicimportFPGrowthasalgfileURL="https://u-aizu.ac.jp/~udayrage/datasets/transactionalDatabases/Transactional_T10I4D100K.csv"minSup=300obj=alg.FPGrowth(iFile=fileURL, minSup=minSup, sep='\t')
#obj.startMine() #deprecatedobj.mine()
obj.save('frequentPatternsAtMinSupCount300.txt')
frequentPatternsDF=obj.getPatternsAsDataFrame()
print('Total No of patterns: '+str(len(frequentPatternsDF))) #print the total number of patternsprint('Runtime: '+str(obj.getRuntime())) #measure the runtimeprint('Memory (RSS): '+str(obj.getMemoryRSS()))
print('Memory (USS): '+str(obj.getMemoryUSS()))
Output:
Frequent patterns were generated successfully using frequentPatternGrowth algorithm
Total No of patterns: 4540
Runtime: 8.749667644500732
Memory (RSS): 522911744
Memory (USS): 475353088
Evaluation:
we compared three different Python libraries such as PAMI, mlxtend and efficient-apriori for Apriori.
(Transactional_T10I4D100K.csv)is a transactional database downloaded from PAMI and
used as an input file for all libraries.
Minimum support values and seperator are also same.
The performance of the Apriori algorithm is shown in the graphical results below:
Comparing the Patterns Generated by different Python libraries for the Apriori algorithm:
Evaluating the Runtime of the Apriori algorithm across different Python libraries:
Comparing the Memory Consumption of the Apriori algorithm across different Python libraries:
For more information, we have uploaded the evaluation file in two formats:
The idea and motivation to develop PAMI was from Kitsuregawa Lab at the University of Tokyo. Work on PAMI started at University of Aizu in 2020 and
has been under active development since then.
Getting Help
For any queries, the best place to go to is Github Issues GithubIssues.
Discussion and Development
In our GitHub repository, the primary platform for discussing development-related matters is the university lab. We encourage our team members and contributors to utilize this platform for a wide range of discussions, including bug reports, feature requests, design decisions, and implementation details.
Contribution to PAMI
We invite and encourage all community members to contribute, report bugs, fix bugs, enhance documentation, propose improvements, and share their creative ideas.
Tutorials
0. Association Rule Mining
Basic
Confidence
Lift
Leverage
1. Pattern mining in binary transactional databases