simple-apriori
Version:
Simple Apriori adalah library simple yang menerapkan metode Aprirori
73 lines (62 loc) • 2.68 kB
JavaScript
;
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