UNPKG

simple-apriori

Version:

Simple Apriori adalah library simple yang menerapkan metode Aprirori

73 lines (62 loc) 2.68 kB
'use strict'; const KoleksiItemset = require('./KoleksiItemset') const Itemset = require('./Itemset') const Bit = require('./Bit') const AturanAssosiasi = require('./AturanAssosiasi') class Apriori { static getSupport(db, supportData) { let itemUnik = db.getItemUnik(); let itemSupportDua = new KoleksiItemset(); let itemSupportTiga = new KoleksiItemset(); let tandaItemIterasi = new KoleksiItemset(); //Iterasi kedua setelah mendapatkan koleksi item for (var i = 0; i < itemUnik.length; i += 1) { itemSupportDua.push(Itemset.from([itemUnik[i]])); } //Iterasi terakhir!!!!!! let k = 2; while (itemSupportDua.length != 0) { // Hialngkan Item seng gak memenuhi syarat Support tandaItemIterasi.clear(); for (var index in itemSupportDua) { let itemset = itemSupportDua[index]; itemset.Support = db.cariAprioriSupport(itemset); if (itemset.Support >= supportData) { tandaItemIterasi.push(itemset); itemSupportTiga.push(itemset); } } // Set Ci for next iteration (find supersets of Li) itemSupportDua.clear(); let subsets = Bit.findSubsets(tandaItemIterasi.getItemUnik(), k); // Get k-item subsets subsets.forEach(set => itemSupportDua.push(set)); k++; } return itemSupportTiga; } static getConfidence(db, L, confidenceThreshold) { let allRules = []; for (var i in L) { let itemset = L[i]; let subsets = Bit.findSubsets(itemset, 0); // Get all subsets for (var j in subsets) { let subset = subsets[j]; //console.log(subsets); let confidence = (db.cariAprioriSupport(itemset) / db.cariAprioriSupport(subset)) * 100.0; if (confidence >= confidenceThreshold) { let rule = new AturanAssosiasi(); subset.forEach(i => rule.X.push(i)); itemset.hapusItemset(subset).forEach(i => rule.Y.push(i)); rule.Support = db.cariAprioriSupport(itemset); rule.Confidence = confidence; //console.log(rule.Confidence); if (rule.X.length > 0 && rule.Y.length > 0) { allRules.push(rule); } } } } return allRules; } } module.exports = Apriori