{"id":23183458,"url":"https://github.com/alexgracianoarj/data-mining-apriori","last_synced_at":"2025-10-10T06:10:41.246Z","repository":{"id":56840571,"uuid":"119112453","full_name":"alexgracianoarj/data-mining-apriori","owner":"alexgracianoarj","description":"Perl extension for implement the apriori algorithm of data mining.","archived":false,"fork":false,"pushed_at":"2021-12-21T00:04:04.000Z","size":59,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-05T03:43:48.673Z","etag":null,"topics":["apriori-algorithm","association-rules","data-mining","perl"],"latest_commit_sha":null,"homepage":"https://alexgracianoarj.github.io/data-mining-apriori/","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexgracianoarj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-26T23:00:36.000Z","updated_at":"2025-02-11T22:07:26.000Z","dependencies_parsed_at":"2022-08-29T01:51:17.706Z","dependency_job_id":null,"html_url":"https://github.com/alexgracianoarj/data-mining-apriori","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/alexgracianoarj/data-mining-apriori","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexgracianoarj%2Fdata-mining-apriori","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexgracianoarj%2Fdata-mining-apriori/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexgracianoarj%2Fdata-mining-apriori/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexgracianoarj%2Fdata-mining-apriori/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexgracianoarj","download_url":"https://codeload.github.com/alexgracianoarj/data-mining-apriori/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexgracianoarj%2Fdata-mining-apriori/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002963,"owners_count":26083487,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apriori-algorithm","association-rules","data-mining","perl"],"created_at":"2024-12-18T09:13:06.283Z","updated_at":"2025-10-10T06:10:41.232Z","avatar_url":"https://github.com/alexgracianoarj.png","language":"Perl","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=FJEQ6DSDWCVJA"],"categories":[],"sub_categories":[],"readme":"## Data::Mining::Apriori\n\nPerl extension for implement the apriori algorithm of data mining.\n\n### SYNOPSIS\n\n```perl\nuse strict;\nuse warnings;\nuse Data::Mining::Apriori;\n\n# TRANSACTION 103:CEREAL 101:MILK 102:BREAD\n#        1101          1        1         0\n#        1102          1        0         1\n#        1103          1        1         1\n#        1104          1        1         1\n#        1105          0        1         1\n#        1106          1        1         1\n#        1107          1        1         1\n#        1108          1        0         1\n#        1109          1        1         1\n#        1110          1        1         1\n\nmy $apriori = new Data::Mining::Apriori;\n\n$apriori-\u003e{metrics}{minSupport}=0.0155; # The minimum support (required), default value is 0.01 (1%)\n\n$apriori-\u003e{metrics}{minConfidence}=0.0155; # The minimum confidence (required), default value is 0.10 (10%)\n\n$apriori-\u003e{metrics}{minLift}=1; # The minimum lift (optional)\n\n$apriori-\u003e{metrics}{minLeverage}=0; # The minimum leverage (optional)\n\n$apriori-\u003e{metrics}{minConviction}=0; # The minimum conviction (optional)\n\n$apriori-\u003e{metrics}{minCoverage}=0; # The minimum coverage (optional)\n\n$apriori-\u003e{metrics}{minCorrelation}=0; # The minimum correlation (optional)\n\n$apriori-\u003e{metrics}{minCosine}=0; # The minimum cosine (optional)\n\n$apriori-\u003e{metrics}{minLaplace}=0; # The minimum laplace (optional)\n\n$apriori-\u003e{metrics}{minJaccard}=0; # The minimum jaccard (optional)\n\n$apriori-\u003e{precision}=2; # Sets the floating point precision of the metrics (required), default value is 3\n\n$apriori-\u003e{output}=1;\n# The output type (optional): 1 - Export to text file delimited by TAB; 2 - Export to excel file with chart.\n\n$apriori-\u003e{pathOutputFiles}='data/'; # The path to output files (optional)\n\n$apriori-\u003e{messages}=1; # A value boolean to display the messages (optional)\n\n$apriori-\u003e{keyItemsDescription}{'101'}='MILK'; # Hash table reference to add items by key and description\n$apriori-\u003e{keyItemsDescription}{102}='BREAD';\n$apriori-\u003e{keyItemsDescription}{'103'}='CEREAL';\n\nmy@items=(103,101);\n$apriori-\u003einsert_key_items_transaction(\\@items); # Insert key items by transaction\n$apriori-\u003einsert_key_items_transaction([103,102]);\n$apriori-\u003einsert_key_items_transaction([103,101,102]);\n$apriori-\u003einsert_key_items_transaction([103,101,102]);\n$apriori-\u003einsert_key_items_transaction([101,102]);\n$apriori-\u003einsert_key_items_transaction([103,101,102]);\n$apriori-\u003einsert_key_items_transaction([103,101,102]);\n$apriori-\u003einsert_key_items_transaction([103,102]);\n$apriori-\u003einsert_key_items_transaction([103,101,102]);\n$apriori-\u003einsert_key_items_transaction([103,101,102]);\n\n# or from a data file\n\n$apriori-\u003einput_data_file(\"datafile.txt\",\",\");\n# Insert key items by line (transaction), accepts the arguments of path to data file and item separator\n```\nFile contents (example)\n```text\n103,101\n103,102\n103,101,102\n103,101,102\n101,102\n103,101,102\n103,101,102\n103,102\n103,101,102\n103,101,102\n```\n```perl\nprint \"\\n${\\$apriori-\u003equantity_possible_rules}\"; # Show the quantity of possible rules\n\n$apriori-\u003e{limitRules}=10; # The limit of rules (optional)\n\n$apriori-\u003e{limitSubsets}=12; # The limit of subsets (optional)\n\n$apriori-\u003egenerate_rules;\n# Generate association rules to no longer meet the minimum support, confidence, lift, leverage, conviction, coverage, correlation, cosine, laplace, jaccard or limit of rules\n\nprint \"\\n@{$apriori-\u003e{frequentItemset}}\\n\"; # Show frequent items\n```\nOutput messages\n```text\n12\n3 items, 12 possible rules\nLarge itemset of length 2, 3 items\nProcessing ...\nFrequent itemset: { 102, 103, 101 }, 3 items\nExporting to file data/output_large_itemset_length_2.txt ...\nLarge itemset of length 3, 3 items\nProcessing ...\nFrequent itemset: { 101, 102, 103 }, 3 items\nExporting to file data/output_large_itemset_length_3.txt ...\n101, 102, 103\n```\nOutput file \"output_itemset_length_2.txt\"\n```text\nRules\tSupport\tConfidence\tLift\tLeverage\tConviction\tCoverage\tCorrelation\tCosine\tLaplace\tJaccard\nR1\t0,80\t0,89\t1,11\t0,08\t1,80\t0,90\t0,67\t0,94\t0,62\t0,89\nR2\t0,70\t0,78\t1,11\t0,07\t1,35\t0,90\t0,51\t0,88\t0,59\t0,78\nR3\t0,80\t0,89\t1,11\t0,08\t1,80\t0,90\t0,67\t0,94\t0,62\t0,89\nR4\t0,70\t0,78\t1,11\t0,07\t1,35\t0,90\t0,51\t0,88\t0,59\t0,78\nR5\t0,70\t0,87\t1,25\t0,14\t2,40\t0,80\t0,76\t0,94\t0,61\t0,87\nR6\t0,70\t0,87\t1,25\t0,14\t2,40\t0,80\t0,76\t0,94\t0,61\t0,87\n\nRule R1: { 102 } =\u003e { 103 }\nSupport: 0,80\nConfidence: 0,89\nLift: 1,11\nLeverage: 0,08\nConviction: 1,80\nCoverage: 0,90\nCorrelation: 0,67\nCosine: 0,94\nLaplace: 0,62\nJaccard: 0,89\nItems:\n102 BREAD\n103 CEREAL\n\n...\n```\nOutput file \"output_itemset_length_3.txt\"\n```text\nRules\tSupport\tConfidence\tLift\tLeverage\tConviction\tCoverage\tCorrelation\tCosine\tLaplace\tJaccard\nR7\t0,60\t0,67\t1,11\t0,06\t1,20\t0,90\t0,41\t0,82\t0,55\t0,67\nR8\t0,60\t0,75\t1,25\t0,12\t1,60\t0,80\t0,61\t0,87\t0,57\t0,75\nR9\t0,60\t0,86\t1,43\t0,18\t2,80\t0,70\t0,80\t0,93\t0,59\t0,86\nR10\t0,60\t0,67\t1,11\t0,06\t1,20\t0,90\t0,41\t0,82\t0,55\t0,67\nR11\t0,60\t0,86\t1,43\t0,18\t2,80\t0,70\t0,80\t0,93\t0,59\t0,86\nR12\t0,60\t0,75\t1,25\t0,12\t1,60\t0,80\t0,61\t0,87\t0,57\t0,75\n\nRule R7: { 102 } =\u003e { 101, 103 }\nSupport: 0,60\nConfidence: 0,67\nLift: 1,11\nLeverage: 0,06\nConviction: 1,20\nCoverage: 0,90\nCorrelation: 0,41\nCosine: 0,82\nLaplace: 0,55\nJaccard: 0,67\nItems:\n102 BREAD\n101 MILK\n103 CEREAL\n\nRule R8: { 102, 103 } =\u003e { 101 }\nSupport: 0,60\nConfidence: 0,75\nLift: 1,25\nLeverage: 0,12\nConviction: 1,60\nCoverage: 0,80\nCorrelation: 0,61\nCosine: 0,87\nLaplace: 0,57\nJaccard: 0,75\nItems:\n102 BREAD\n103 CEREAL\n101 MILK\n\n...\n```\n\n### DESCRIPTION\n\nThis module implements the apriori algorithm of data mining.\n\n### ATTRIBUTES\n\n* `totalTransactions` - The total number of transactions.\n\n* `metrics` - The type of metrics:\n\n\t* `minSupport` - The minimum support (required), default value is 0.01 (1%)\n\n\t* `minConfidence` - The minimum confidence (required), default value is 0.10 (10%)\n\n\t* `minLift` - The minimum lift (optional)\n\n\t* `minLeverage` - The minimum leverage (optional)\n\n\t* `minConviction` - The minimum conviction (optional)\n\n\t* `minCoverage` - The minimum coverage (optional)\n\n\t* `minCorrelation` - The minimum correlation (optional)\n\n\t* `minCosine` - The minimum cosine (optional)\n\n\t* `minLaplace` - The minimum laplace (optional)\n\n\t* `minJaccard` - The minimum jaccard (optional)\n\n* `precision` - Sets the floating point precision of the metrics (required), default value is 3\n\n* `limitRules` - The limit of rules (optional)\n\n* `limitSubsets` - The limit of subsets (optional)\n\n* `output` - The output type (optional):\n\n\t* 1 - Text file delimited by TAB;\n\n\t* 2 - Excel file with chart.\n\n* `pathOutputFiles` - The path to output files (optional)\n\n* `messages` - A value boolean to display the messages (optional)\n\n* `keyItemsDescription` - Hash table reference to add item by key and description.\n\n* `keyItemsTransactions` - Hash table reference to add items by keys and transactions.\n\n* `frequentItemset` - Frequent itemset.\n\n* `associationRules` - A data structure to store the name of the rule, key items, implication, support, confidence, lift, leverage, conviction, coverage, correlation, cosine, laplace and jaccard.\n\n```perl\n$self-\u003e{associationRules} = {\n\t\t\t\t'1' =\u003e {\n\t\t\t\t\t   'confidence' =\u003e '0.89',\n\t\t\t\t\t   'cosine' =\u003e '0.94',\n\t\t\t\t\t   'implication' =\u003e '{ 102 } =\u003e { 103 }',\n\t\t\t\t\t   'coverage' =\u003e '0.90',\n\t\t\t\t\t   'laplace' =\u003e '0.62',\n\t\t\t\t\t   'jaccard' =\u003e '0.89',\n\t\t\t\t\t   'support' =\u003e '0.80',\n\t\t\t\t\t   'correlation' =\u003e '0.67',\n\t\t\t\t\t   'items' =\u003e [\n\t\t\t\t\t\t\t'102',\n\t\t\t\t\t\t\t'103'\n\t\t\t\t\t\t\t],\n\t\t\t\t\t   'conviction' =\u003e '1.80',\n\t\t\t\t\t   'lift' =\u003e '1.11',\n\t\t\t\t\t   'leverage' =\u003e '0.08'\n\t\t\t\t\t },\n\t\t\t\t#...\n```\n\n### METHODS\n\n* `new` - Creates a new instance of Data::Mining::Apriori.\n\n* `insert_key_items_transaction(\\@items)` - Insert key items per transaction. Accepts the following arguments:\n\n\t* An array reference to key items.\n\n* `input_data_file(\"datafile.txt\",\",\")` - Insert items per line (transaction). Accepts the following arguments:\n\n\t* Data file;\n\n\t* Item separator.\n\nFile contents (example):\n```text\n103,101\n103,102\n103,101,102\n103,101,102\n101,102\n103,101,102\n103,101,102\n103,102\n103,101,102\n103,101,102\n```\n\n* `quantity_possible_rules` - Returns the quantity of possible rules.\n\n* `generate_rules` - Generate association rules until no set of items meets the minimum support, confidence, lift, leverage, conviction, coverage, correlation, cosine, laplace, jaccard or limit of rules.\n\n* `association_rules` - Generate association rules by length of large itemsets.\n\n### Screenshots\n\n![image](/screenshots/output_length_2.png)\n![image](/screenshots/output_length_3.png)\n\n### AUTHOR\n\nAlex Graciano, [agraciano@cpan.org](mailto:agraciano@cpan.org)\n\n### COPYRIGHT AND LICENSE\n\nCopyright (C) 2015-2018 by Alex Graciano\n\nThis library is free software; you can redistribute it and/or modify\nit under the same terms as Perl itself, either Perl version 5.12.4 or,\nat your option, any later version of Perl 5 you may have available.\n\n### Donation\n\nIf this project help you reduce time to develop, you can give me a cup of coffee :) \n\n[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=FJEQ6DSDWCVJA)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexgracianoarj%2Fdata-mining-apriori","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexgracianoarj%2Fdata-mining-apriori","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexgracianoarj%2Fdata-mining-apriori/lists"}