• Tidak ada hasil yang ditemukan

Kesimpulan dari tugas akhir ini adalah :

1. Algoritma ID3 berhasil diimplementasikan dengan 375 dataquery pencarian situs website dengan menggunakan 4 kategori yang ada.

2. Dari hasil 10 kali pengujian dengan 500 data didapat hasil akurasi yang paling tinggi yaitu sebesar 24%. Nilai maksimum didapat niliai sebesar 24% dan nilai minimum didapat nilai sebesar 16%. Rata – rata nilai akurasi yang didapat adalah sebesar 19%.

6.2Saran

Saran yang diperlukan untuk perbaikan dan pengembangan program lebih lanjut adalah :

1. Program dapat menerima masukan file berupa csv tidak hanya yang bertipe .xls.

2. Data untuk pengujian diperbesar agar didapat nilai akurasi yang lebih tinggi.

Daftar Pustaka

Hermawati Fajar Astuti, 2003, Data Mining, Yogyakarta,

Iko Pramudiono, 2003, Pengantar Data Mining, Kuliah Umum IlmuKomputer.Com

Sarwono Jonathan, 2013, 12 Jurus Ampuh SPSS untuk Riset Skripsi, Jakarta,

Taufiq Luthfi, Emha, Kusrini, 2009, Algoritma Data Mining, Yogyakarta,

Yudho Giri Sucahyo, 2003, Penerapan Data Mining, Artikel Populer IlmuKomputer.Com

LAMPIRAN 1

Dibawah ini adalah implementasi program yang digunakan untuk membuat sistem.

Package Form

1. a. Nama kelas : FormLogin

b. Nama method

:TombolLoginActionPerformed(java.awt.event.ActionEvent evt)

c. Fungsi method : d. Listing program :

Private void TombolLoginActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here String username = jTextField1.getText(); String pswd = jPasswordField1.getText(); CekLogin cek = new CekLogin();

boolean hasil = cek.cekLogin(username, pswd); if(hasil==true){

HalamanUtama form = new HalamanUtama(); form.setVisible(hasil);

this.dispose(); }

}

private void passwordFieldKeyPressed(java.awt.event.KeyEvent evt) { // TODO add your handling code here:

String pswd = jPasswordField1.getText(); CekLogin cek = new CekLogin();

boolean hasil = cek.cekLogin(username, pswd); if(hasil==true){

HalamanUtama form = new HalamanUtama(); form.setVisible(hasil);

this.dispose(); }

}

2. a. Nama kelas : HalamanUtama b. Nama method :TestingFold()

c. Fungsi method : untuk pengujian data d. Listing program :

private void TestingFold() { int fold = 3;

String[][] data = this.getData();

String[][][] dataDibagi = new String[fold][][];

for (int i = 0; i < fold; i++) { // membagi data sesuai jumlah fold dataDibagi[i] = getDataByFold(data, fold, i);

System.out.println(dataDibagi[i].length); }

int bener = 0; int total = 0;

for (int i = 0; i < fold; i++) { String[][] dataJoin = null; for (int j = 0; j < fold; j++) {

if(j != i) { // data lain jadi trainning *digabungkan

joinData(dataJoin, dataDibagi[j]); }

}

Tree tree = new Tree();

tree.buildTree(dataJoin); // membuat tree dari data trainning fold ke-i

for (int j = 0; j < dataDibagi[i][0].length; j++) { // untuk mengetest per row data dalam tree

String hasil = tree.testing(transformData(dataDibagi[i], j)); // proses testing

prediksiTextArea.setText(prediksiTextArea.getText() +

"Hasil = " + hasil + "=?=" + dataDibagi[i][0][j] + "\n");

if(hasil.equals(dataDibagi[i][0][j])) { // mencocokan hasil test dengan interest data asli

bener++; // menghitung jumlah yang benar }

total++; // menghitung jumlah total data testing }

}

prediksiTextArea.setText(prediksiTextArea.getText() +

"Persentase = " + ((float) bener * 100 / total) + "%");// menghitung presentase

System.out.println("Persentase = " + ((float) bener * 100 / total) + "%");

}

3. a. Nama kelas : HalamanUtama

c. Fungsi method : untuk mengubah data baris menjadi kolom dan data kolom menjaddi baris.

d. Listing program :

private String[ ] transformData(String[ ][ ] data, int idx) { // mengubah data row -> colom |colom -> row

String[ ] newData = new String[data.length - 1]; for (int i = 0; i < newData.length; i++) {

newData[i] = data[i + 1][idx]; }

return newData; }

4. a. Nama kelas : HalamanUtama

b. Nama method :String[][] joinData(String[][] data1, String[][] data2)

c. Fungsi method : untuk menggabungkan 2 set data. d. Listing program :

private String[ ][ ] joinData(String[ ][ ] data1, String[ ][ ] data2) { // menggabungakan 2 set data

String[ ][ ] data = new String[data1.length][data1[0].length + data2[0].length];

for (int i = 0; i < data1.length; i++) { for (int j = 0; j < data1[i].length; j++) {

data[i][j] = data1[i][j]; // copy data pertama }

}

for (int j = 0; j < data2[i].length; j++) {

data[i][j + data1[0].length] = data2[i][j]; //copy data kedua }

} return data; }

5. a. Nama kelas : HalamanUtama

b. Nama method :String[][] getDataByFold(String[][] data,int fold, int foldID)

c. Fungsi method : untuk mengambil data sesuai dengan foldnya. d. Listing program :

private String[ ][ ] getDataByFold(String[ ][ ] data,int fold, int foldID) { // mengambil data sesuai dengan foldnya

int sisa = data[0].length % fold; int jum = data[0].length / 3; jum += foldID < sisa ? 1 : 0;

String[ ][ ] newData = new String[data.length][jum]; int idx = 0;

for (int i = foldID; i < data[0].length; i+=fold) {//dimulai dari fold id, dengan increment fold

for (int j = 0; j < newData.length; j++) { newData[j][idx] = data[j][i]; } idx++; } return newData; }

6. a. Nama kelas : HalamanUtama b. Nama method :String[][] getData()

c. Fungsi method : untuk mengambil data dari tabel. d. Listing program :

private String[ ][ ] getData() { // mengambil data dari tabel

DefaultTabelModel model = (DefaultTabelModel)

tabel1.getModel();

String[ ][ ]data = new

String[model.getColumnCount()][model.getRowCount()]; for (int i = 0; i < data.length; i++) { // utk setiap kolom for (int j = 0; j < data[i].length; j++) { // untuk setiap baris data[i][j] = model.getValueAt(j, i).toString();

} }

return data; }

Package Kelas

1. a. Nama kelas : BacaFile

b. Nama method :String bacaFile(File file)

c. Fungsi method : untuk membaca file yang dimasukkan. d. Listing program :

public String bacaFile(File file) { String hasil = null;

if (file.isFile()) { try {

BufferedReader read = new BufferedReader(new FileReader(file)); //menyimpan file ke dalam buffer buat dibaca int i;

try {

while ((i = read.read()) != -1) { if (hasil != null) {

hasil = hasil + (char) i + read.readLine() + "\n"; } else {

hasil = (char) i + read.readLine() + "\n"; }

}

} catch (IOException ex) { ex.getMessage(); }

} catch (FileNotFoundException ex) { ex.getMessage();

} }

return hasil; }

2. a. Nama kelas : CekLogin

b. Nama method :cekLogin(String username, String pswd) c. Fungsi method : untuk

d. Listing program :

public boolean cekLogin(String username, String pswd) { boolean hasil = false;

if (!username.equals("") && !pswd.equals("")) { Login login = new Login();

hasil = login.login(username, pswd); if (hasil == true) {

JOptionPane.showMessageDialog(null, "Anda berhasil

Login"); } else {

JOptionPane.showMessageDialog(null, "Login gagal"); }

} else {

JOptionPane.showMessageDialog(null, "Isi data username dan password terlebih dahulu");

}

return hasil; }

3. a. Nama kelas : Login

b. Nama method :login(String username, String password) c. Fungsi method : untuk mencocokkan username dan password. d. Listing program :

public boolean login(String username, String password) { boolean hasil = false;

Koneksi connection = new Koneksi();

String sql = "select password from login where username = '" + username + "' and password= '" + password + "';";

Statement statement; try {

statement = (Statement)

connection.bukaKoneksi().createStatement();

while(result.next()){ System.out.println("ada"); hasil=true; } statement.close(); connection.tutupKoneksi(); } catch (SQLException ex) {

Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);

}

return hasil; }

4. a. Nama kelas : PerhitunganData b. Nama method :entropy(int[][] data) c. Fungsi method : untuk setiap nilai entropy. d. Listing program :

public double[] entropy(int[][] data) {//menghitung nilai entropy double[] hasil = new double[data.length];

for (int i = 0; i < data.length; i++) { int[] tempData = data[i]; int tot = 0;

for (int j = 0; j < tempData.length; j++) {

tot += tempData[j]; // mencari jumlah mmasing2 interest }

hasil[i] = 0;

for (int j = 0; j < tempData.length; j++) { // loop untuk setiap partisi atribut

double temp = ((double) tempData[j] / tot) * log2(((double) tempData[j] / tot)); // menghitung peluang partisi dalam interest hasil[i] += Double.isInfinite(temp) || Double.isNaN(temp) ? 0 : temp; // menghindari nilai tidak terdefinisi.

}

hasil[i] = -hasil[i]; }

return hasil; }

5. Nama kelas : PerhitunganData

b. Nama method :gain(double[] entropy, int[][] data) c. Fungsi method : untuk setiap nilai gain.

d. Listing program :

public double gain(double[] entropy, int[][] data) {//menghitung nilai gain

if (entropy == null) { // entropynya harus ada entropy = this.entropy(data);

}

int jum = 0;

int tot[] = new int[data.length];

for (int i = 0; i < data.length; i++) { // menghitung jumlah setiap partisi atribut

int[] tempData = data[i]; tot[i] = 0;

for (int j = 0; j < tempData.length; j++) { tot[i] += tempData[j];

jum += tot[i]; }

double gain = 0;

for (int i = 0; i < tot.length; i++) { // menghitung semua (peluang * entropy) masing2 atribute

gain += (double) tot[i] / jum * entropy[i]; }

int[][] interest = new int[1][data[0].length];

for (int i = 0; i < data.length; i++) { // menghitung jumlah interest dalam masibg2 atribute

for (int j = 0; j < data[i].length; j++) { interest[0][j] += data[i][j]; }

}

double entropySemua = this.entropy(interest)[0]; // menghitung entrpy semua

Helper.textAreaActive.setText(

Helper.textAreaActive.getText() + "Entropy semua " + entropySemua + "\n");

// System.out.println("Entropy semua " + entropySemua); gain = entropySemua - gain; // rumus gain = entropysemua - jumlah (peluang * entropy)

return gain; }

6. a. Nama kelas : PerhitunganData

c. Fungsi method : untuk mengubah data mentah(tabel) menjadi data informasi jumlah partisi atribute per interest

d. Listing program :

public int[ ][ ][ ] transfromData(String[ ][ ] data) { // mengubah data mentah(tabel) menjadi data informasi jumlah partisi atribute per interest

int hasil[ ] [ ][ ] = new int[data.length - 1][ ][ ];

Map<String, Integer> dicInterest = new HashMap<String, Integer>();

for (int i = 0; i < data[0].length; i++) { //membuat daftar interest yang ada

String val = data[0][i];

if (!dicInterest.containsKey(val)) { dicInterest.put(val, dicInterest.size()); }

}

for (int i = 0; i < hasil.length; i++) { // loop masing2 atribute Map<String, Integer> dic = new HashMap<String, Integer>(); for (int j = 0; j < data[i + 1].length; j++) { // mebuat daftar partisi atribute

String val = data[i + 1][j]; if (!dic.containsKey(val)) { dic.put(val, dic.size()); }

}

int[][] tabelAttribute = new

int[dic.keySet().size()][dicInterest.keySet().size()];

partisi atribute per iterest tabelAttribute[dic.get(data[i + 1][j])][dicInterest.get(data[0][j])]++; } } hasil[i] = tabelAttribute; } return hasil; }

7. a. Nama kelas : PerhitunganData

b. Nama method :buildTree(String[][] tabel)

c. Fungsi method : untuk membuat pohon keputusan (tree). d. Listing program :

public Node buildTree(String[][] tabel) {// membuat tree

if (tabel.length < 2) { // merupakan attribute terakhir tidak dapat diproses

return new Node(); }

int[][][] data = transfromData(tabel);

double[] gain = new double[data.length]; int maxGainIndex = 0;

double[][] entro = new double[data.length][];

for (int i = 0; i < data.length; i++) { // mencari gain atribut yang maximal

int[][] tempData = data[i];

gain[i] = gain(entro[i] = entropy(tempData), tempData); maxGainIndex = gain[i] > gain[maxGainIndex] ? i :

maxGainIndex; Helper.textAreaActive.setText( Helper.textAreaActive.getText() + gain[i] + "\n"); // System.out.println(gain[i]); } Helper.textAreaActive.setText( Helper.textAreaActive.getText() + "---" + "\n"); // System.out.println("---");

String[] unik = unique(tabel[maxGainIndex + 1]); // mencari partisi variable

Node currNode = new Node();

currNode.setChilds(new Node[unik.length]); currNode.setIdxSyarat(maxGainIndex); Helper.textAreaActive.setText(

Helper.textAreaActive.getText() + "UNIK" + "\n"); // System.out.println("UNIK");

for (int i = 0; i < unik.length; i++) { Helper.textAreaActive.setText(

Helper.textAreaActive.getText() + unik[i] + "\n"); // System.out.println(unik[i]);

}

for (int i = 0; i < unik.length; i++) {

if (entro[maxGainIndex][i] == 0) { // jika entropy = 0, maka akan menjadi node terakhir(leaf)

Node nod = new Node();

nod.setHasil(getLeaf(tabel, maxGainIndex + 1, unik[i], data[maxGainIndex][i].length)); // untuk menentukan interest nod.setValueSyaratParent(unik[i]);

} else { // jika entory !0 maka akan dipecah jadi child int jum = 0;

for (int j = 0; j < data[maxGainIndex][i].length; j++) { jum += data[maxGainIndex][i][j]; } Helper.textAreaActive.setText( Helper.textAreaActive.getText() + maxGainIndex+"-"+unik[i] +"-"+ jum + "\n"); // System.out.println(maxGainIndex+"-"+unik[i] +"-"+ jum); String[][] newTabel = removeUnik(tabel, maxGainIndex + 1, unik[i], jum); // menghilangkan data yang bukan merupakan partisi varible yg sedang diproses

for (int j = 0; j < newTabel.length; j++) { String[] strings = newTabel[j]; for (int k = 0; k < strings.length; k++) { Helper.textAreaActive.setText( Helper.textAreaActive.getText() + strings[k]); // System.out.print(strings[k]+" "); } Helper.textAreaActive.setText( Helper.textAreaActive.getText() + "" +""+""+ "\n"); // System.out.println("");System.out.println("");System.out.println(""); }

if (newTabel.length < 2) { // merupakan varibale terakhir dipakasa mencari leaf

Node nod = new Node();

nod.setHasil(getLeaf(tabel, maxGainIndex + 1, unik[i], data[maxGainIndex][i].length)); // dicari leaf dengan jumlah paling banyak atau pertama terbanyak

nod.setValueSyaratParent(unik[i]); currNode.getChilds()[i] = nod;

} else { // masih bisa dipecah childnya

Node child = buildTree(newTabel); // rekursive mengulang proses yang sama utk data yg sudah dipotong

child.setValueSyaratParent(unik[i]); currNode.getChilds()[i] = child; } } } Helper.textAreaActive.setText( Helper.textAreaActive.getText() + "---" + "\n"); // System.out.println("---"); return currNode; }

8. a. Nama kelas : PerhitunganData

b. Nama method :getLeaf(String[][] data, int idx, String unik, int jumInterest)

c. Fungsi method : untuk mencari leaf (hasil node terakhir pada pohon keputusan).

d. Listing program :

private String getLeaf(String[][] data, int idx, String unik, int jumInterest) { // mencari leaf

Map<String, Integer> interest = new HashMap<String, Integer>(); String maxVal = "";

for (int i = 0; i < data[idx].length; i++) { // loop setiap data ut mencari yang terbanyak atau pertama terbanyak

if (data[idx][i].equals(unik)) { String val = data[0][i];

if (interest.containsKey(val)) { // membuat daftar partisi dengan jumlahnya

interest.put(val, interest.get(val).intValue() + 1); // jika sudah ada ditambah 1

} else {

interest.put(val, 1); // jika belum ada diintisial 1 }

if (interest.containsKey(maxVal)) { // inisialisasi maxVal jika sudah akan dibandingkan

if (interest.get(val).intValue() >

interest.get(maxVal).intValue()) { // pengecekan data terbanyak maxVal = val;

}

} else { // jika belum maka akan dianggap max maxVal = val; } } } return maxVal; }

9. a. Nama kelas : PerhitunganData

b. Nama method :removeUnik(String[][] data, int idx, String unik, int jum)

c. Fungsi method : untuk menghilangkan atribut partisi unik dan bukan unik.

public String[][] removeUnik(String[][] data, int idx, String unik, int jum) { // menghilangkan "attribute partisi unik", dan "partisi yang bukan unik"

String[][] newData = new String[data.length - 1][jum]; int id = 0;

for (int i = 0; i < data[idx].length; i++) { // baris

if (data[idx][i].equals(unik)) { // ini filter yang unik (selain partisi unik bisa di copy)

int tempJ = 0; // kolom

for (int j = 0; j < data.length; j++) {

if (idx != j) { // ini filter atribut unik (selain atribut unik bisa di copy) newData[tempJ][id]= data[j][i]; tempJ++; } } id++; } } return newData; }

10.a. Nama kelas : PerhitunganData b. Nama method :unique(String[] data)

c. Fungsi method : untuk membuat daftar partisi variable yang unik

d. Listing program :

rivate String[ ] unique(String[ ] data) { // membuat daftar partisi variable yang unik

ArrayList<String> dic = new ArrayList<String>(); for (int i = 0; i < data.length; i++) {

String val = data[i];

if (!dic.contains(val)) { // jika belum ada, dimasukan dalam list dianggap unik

dic.add(val); }

}

String[] unik = new String[dic.size()];

for (int i = 0; i < unik.length; i++) { // mengubah dari arrayylist ke arrayString unik[i] = dic.get(i); } return unik; } }

11.a. Nama kelas : Tree b. Nama method :printTree()

c. Fungsi method : untuk menampilkan tree (pohon keputusan) d. Listing program :

public void printTree() { //menampilkan tree Node curr = root; // mulai dari root Stack<Node> st = new Stack<Node>(); st.push(curr);

while (!st.empty()) { //selama stacknya masih ada, berarti masih ada node yang bisa d tampilkan

curr = st.pop();

terakhir maka yg ditampikan adalah value dari attribute (smartphone di tipe) Helper.textAreaActive.setText( Helper.textAreaActive.getText() + curr.getValueSyaratParent() + "-" + curr.getHasil() + "\n"); // System.out.println(curr.getValueSyaratParent() + "-" + curr.getHasil());

} else { // jika punya child maka yg ditampilkan childnya...

String s = curr.getIdxSyarat() + "-" +

curr.getValueSyaratParent() + " = ";

for (int i = 0; i < curr.getChilds().length; i++) { // mendapatkan setiap child

st.push(curr.getChilds()[i]); // memasukan tiap child dalam stack Helper.textAreaActive.setText( Helper.textAreaActive.getText() + curr.getChilds()[i].getValueSyaratParent() + "," + "\n"); // s += curr.getChilds()[i].getValueSyaratParent() + ","; // nampilin } Helper.textAreaActive.setText( Helper.textAreaActive.getText() + s + "\n"); // System.out.println(s); } } }

12.a. Nama kelas : Tree

c. Fungsi method : untuk menghilangkan attribute dalam index tertentu

d. Listing program :

String[] removeAtt(String[] dat, int idx) { // untuk mengilangkan attribute dalam index tertentu

String[] datTemp = new String[dat.length - 1]; int id = 0;

for (int i = 0; i < dat.length; i++) { // loop untuk maisng2 attribute if (i != idx) { // mengopy data attribute selain yang mau dihapus datTemp[id] = dat[i]; id++; } } return datTemp; }

13.a. Nama kelas : Tree

b. Nama method :testing(String[] data)

c. Fungsi method : untuk pengecekkan data terhadap tree d. Listing program :

public String testing(String[] data) { String hasil = "";

Node curr = root; int syart = -1; int countDeep = 0;

while (curr.getChilds() != null) { // mencari node terakhir(tidak ada child)

boolean ada = false;

for (int i = 0; i < curr.getChilds().length; i++) { // mencari setiap child Helper.textAreaActive.setText( Helper.textAreaActive.getText() + data[curr.getIdxSyarat()] +"===="+curr.getChilds()[i].getValueSyaratParent() + "\n"); // System.out.println(data[curr.getIdxSyarat()] +"===="+curr.getChilds()[i].getValueSyaratParent()); if (data[curr.getIdxSyarat()].equals(curr.getChilds()[i].getValueSyara tParent())) { //membandingkan value dengan syarat dalam tree data = removeAtt(data, curr.getIdxSyarat());

curr = curr.getChilds()[i]; ada = true;

break; } }

if(!ada) { // jika tidakk ada syarat yang cocok return "unidentified"; } } hasil = curr.getHasil(); return hasil; }

14.a. Nama kelas : Tree b. Nama method :saveTree ( )

d. Listing program :

public void saveTree() { try {

File file = new File("save.obj");

FileOutputStream fileOutput = new FileOutputStream(file);

ObjectOutputStream objectOutput = new

ObjectOutputStream(fileOutput); objectOutput.writeObject(root); objectOutput.close(); fileOutput.close();

} catch (Exception ex) {

Logger.getLogger(Tree.class.getName()).log(Level.SEVERE, null,

ex);

} }

15.a. Nama kelas : Tree b. Nama method :loadTree ( )

c. Fungsi method : untuk membaca pola dari tree d. Listing program :

public boolean loadTree() { try {

File file = new File("save.obj");

FileInputStream fileInput = new FileInputStream(file);

ObjectInputStream objectInput = new

ObjectInputStream(fileInput);

root = (Node) objectInput.readObject(); objectInput.close();

return true;

} catch (Exception ex) {

Logger.getLogger(Tree.class.getName()).log(Level.SEVERE, null,

ex); }

return false; }

LAMPIRAN 2

Di bawah ini adalah hasil pohon keputusan (tree) dengan menggunakan data sebanyak 375 data. siang, pagi, malam, 2-null = Jakarta, Surabaya, San Mateo, Bandung, Medan, Singapore, Sidoarjo, Purwokerto, Depok, Batam, Pontianak, Mountain View, Boardman, Kudus, Tangerang, 1-malam = Tangerang-Motorbike Kudus-Motorbike Boardman-Motorbike Mountain View-Motorbike Pontianak-Motorbike Batam-Motorbike Depok-Motorbike Purwokerto-Smartphone Sidoarjo-Smartphone

Singapore-Smartphone akhir, awal, 1-Medan = awal-Motorbike akhir-Smartphone Bandung-Smartphone tengah, awal, akhir, 1-San Mateo = akhir-Motorbike Smartphone, 0-awal = , 0-Smartphone = -Smartphone Smartphone, 0-tengah = , 0-Smartphone = -Motorbike tengah, awal, 1-Surabaya = Smartphone, Personal computer, 0-awal = Personal computer-Motorbike , 0-Smartphone = -Motorbike Smartphone, Personal computer, 0-tengah =

, 0-Personal computer = -Smartphone , 0-Smartphone = -Motorbike awal, tengah, akhir, 1-Jakarta = akhir-Motorbike Smartphone, Personal computer, 0-tengah = , 0-Personal computer = -Motorbike , 0-Smartphone = -Motorbike Personal computer, Smartphone, 0-awal = , 0-Smartphone = -Motorbike , 0-Personal computer = -Smartphone Jakarta, Surabaya, Bandung, Boardman, Palembang, Singapore,

San Mateo, Madiun, Beijing, Bogor, Tangerang, Yogyakarta, Surakarta, Mojokerto, Saratoga, Tokyo, Bekasi, Providence, Pontianak, 1-pagi = Pontianak-Talisman Providence-Talisman Bekasi-Motorbike Tokyo-Motorbike Saratoga-Motorbike Mojokerto-Motorbike Surakarta-Smartphone Yogyakarta-Smartphone Tangerang-Smartphone Bogor-Smartphone Beijing-Smartphone Madiun-Smartphone San Mateo-Smartphone Singapore-Smartphone Palembang-Smartphone Personal computer, 0-Boardman = tengah, 0-Personal computer = , 0-tengah =

-Fashion Bandung-Fashion Surabaya-Fashion tengah, awal, akhir, 1-Jakarta = akhir-Smartphone Smartphone, 0-awal = , 0-Smartphone = -Smartphone Smartphone, Personal computer, Tabelt, 0-tengah = Tabelt-Talisman Personal computer-Fashion Smartphone-Fashion Surabaya, Jakarta, Denpasar, Mountain View, Bandung, Tejgaon, Yogyakarta, London, Samarinda, Sleman, Palembang, Singapore, Bogor, San Mateo, Boardman,

Pekanbaru, Kudus, Sidoarjo, Bantul, Medan, Makassar, Beijing, Depok, Dki Jakarta, Mega, 1-siang = Mega-Talisman Dki Jakarta-Talisman Depok-Smartphone tengah, akhir, 1-Beijing = akhir-Talisman tengah-Smartphone Makassar-Smartphone Smartphone, Personal computer, 0-Medan = Personal computer-Talisman Smartphone-Smartphone Bantul-Smartphone Personal computer, Smartphone, 0-Sidoarjo = Smartphone-Talisman Personal computer-Smartphone Personal computer, Smartphone, 0-Kudus = Smartphone-Talisman

Personal computer-Smartphone Personal computer, 0-Pekanbaru = tengah, 0-Personal computer = , 0-tengah = -Smartphone Boardman-Fashion Smartphone, 0-San Mateo = tengah, 0-Smartphone = , 0-tengah = -Fashion Bogor-Fashion awal, akhir, 1-Singapore = akhir-Smartphone Personal computer, 0-awal = , 0-Personal computer = -Fashion Personal computer, Tabelt, 0-Palembang = Tabelt-Talisman Personal computer-Fashion Sleman-Fashion Samarinda-Fashion London-Fashion Yogyakarta-Fashion

Tejgaon-Fashion tengah, akhir, awal, 1-Bandung = Personal computer, Smartphone, 0-awal = Smartphone-Talisman , 0-Personal computer = -Talisman Personal computer, 0-akhir = , 0-Personal computer = -Smartphone Smartphone, 0-tengah = , 0-Smartphone = -Talisman tengah, awal, akhir, 1-Mountain View = akhir-Fashion awal-Fashion Smartphone, 0-tengah = , 0-Smartphone = -Fashion Denpasar-Fashion Smartphone,

Personal computer, Tabelt, 0-Jakarta = Tabelt-Smartphone tengah, akhir, awal, 0-Personal computer = , 0-awal = -Fashion , 0-akhir = -Fashion , 0-tengah = -Fashion awal, tengah, akhir, 0-Smartphone = , 0-akhir = -Fashion , 0-tengah = -Talisman , 0-awal = -Fashion awal, akhir, tengah, 1-Surabaya = Smartphone,

Personal computer, 0-tengah = Personal computer-Smartphone , 0-Smartphone = -Talisman Personal computer, Smartphone, 0-akhir = Smartphone-Talisman , 0-Personal computer = -Fashion Personal computer, Smartphone, 0-awal = Smartphone-Smartphone Personal computer-Fashion

LAMPIRAN 3

Rule untuk interestFashion

Rule 1 : Interest Fashion = if waktu = pagi^bulan = tengah^type = Personal Computer^city = Boardman

Rule 2 : Interest Fashion = if waktu = pagi^bulan = tengah^type = Personal Computer^city = Jakarta

Rule 3 : Interest Fashion = if waktu = pagi^bulan = tengah^type = Smartphone Rule 4 : Interest Fashion = if waktu = siang^city = Boardman

Rule 5 : Interest Fashion = if waktu = siang^city = Bogor Rule 6 : Interest Fashion = if waktu = siang^city = Denpasar

Rule 7 : Interest Fashion = if waktu = siang^city = Jakarta^type = Personal Computer^bulan = akhir

Rule 8 : Interest Fashion = if waktu = siang^city = Jakarta^type = Personal Computer^bulan = awal

Rule 9 : Interest Fashion = if waktu = siang^city = Jakarta^type = Personal Computer^bulan = tengah

Rule 10 : Interest Fashion = if waktu = siang^city = Jakarta^type = Smartphone^bulan = akhir

Rule 11 : Interest Fashion = if waktu = siang^city = Jakarta^type = Smartphone^bulan = awal

Rule 13 : Interest Fashion = if waktu = siang^city = Mountain View^bulan = akhir Rule 14 : Interest Fashion = if waktu = siang^city = Mountain View^bulan = awal Rule 15 : Interest Fashion = if waktu = siang^city = Mountain View^bulan = tengah^type = Smartphone

Rule 16 : Interest Fashion = if waktu = siang^city = Palembang^type = Personal Computer

Rule 17 : Interest Fashion = if waktu = siang^city = Samarinda

Rule 18 : Interest Fashion = if waktu = siang^city = San Mateo^type = Smartphone^bulan = tengah

Rule 19 : Interest Fashion = if waktu = siang^city = Singapore^bulan = awal^type = Personal Computer

Rule 20 : Interest Fashion = if waktu = siang^city = Sleman

Rule 21 : Interest Fashion = if waktu = siang^city = Surabaya^type = Personal Computer^bulan = akhir

Rule 22 : Interest Fashion = if waktu = siang^city = Surabaya^type = Personal Computer^bulan = awal

Rule 23 : Interest Fashion = if wakktu = siang^city = Tejgaon Rule 24 : Interest Fashion = if wakktu = siang^city = Yogyakarta

Rule untuk interestSmartphone

Rule 1 : Interest Smartphone = if waktu = malam^city = Bandung

Rule 2 : Interest Smartphone = if waktu = malam^city = Jakarta^bulan = awal^type = Personal Computer

Rule 3 : Interest Smartphone = if waktu = malam^city = Medan^bulan =akhir Rule 4 : Interest Smartphone = if waktu = malam^city = Purwokerto

Rule 5 : Interest Smartphone = if waktu = malam^city = San Mateo^bulan = awal^type = Smartphone

Rule 6 : Interest Smartphone = if waktu = malam^city = Sidoarjo Rule 7 : Interest Smartphone = if waktu = malam^city = Singapore

Rule 8 : Interest Smartphone = if waktu = malam^city = Surabaya^type = Personal Computer^bulan = tengah

Rule 9 : Interest Smartphone = if waktu = pagi^bulan = akhir^city = Beijing Rule 10 : Interest Smartphone = if waktu = pagi^bulan = akhir^city = Bogor Rule 11 : Interest Smartphone = if waktu = pagi^bulan = akhir^city = Jakarta Rule 12 : Interest Smartphone = if waktu = pagi^bulan = akhir^city = Madiun Rule 13 : Interest Smartphone = if waktu = pagi^bulan = akhir^city = Palembang Rule 14 : Interest Smartphone = if waktu = pagi^bulan = akhir^city = San Mateo Rule 15 : Interest Smartphone = if waktu = pagi^bulan = akhir^city = Singapore Rule 16 : Interest Smartphone = if waktu = pagi^bulan = akhir^city = Tangerang Rule 17 : Interest Smartphone = if waktu = pagi^bulan = awal^city = Jakarta^type = Smartphone

Rule 18 : Interest Smartphone = if waktu = pagi^bulan = awal^city = Singapore Rule 19 : Interest Smartphone = if waktu = pagi^bulan = awal^city = Yogyakarta Rule 20 : Interest Smartphone = if waktu = pagi^bulan = tengah^type = Tabelt^city = Surakarta

Rule 21 : Interest Smartphone = if waktu = siang^city = Bandung^type = Personal Computer^bulan = akhir

Rule 22 : Interest Smartphone = if waktu = siang^city = Depok

Rule 23 : Interest Smartphone = if waktu = siang^city = Jakarta^type = Tabelt

Rule 24 : Interest Smartphone = if waktu = siang^city = Kudus^type = Personal Computer

Rule 25 : Interest Smartphone = if waktu = siang^city = Makasar

Rule 26 : Interest Smartphone = if waktu = siang^city = Medan^type = Smartphone Rule 27 : Interest Smartphone = if waktu = siang^city = Pekanbaru^type = Personal Computer^bulan = tengah

Rule 28 : Interest Smartphone = if waktu = siang^city = Sidoarjo^type = Personal Computer

Rule 29 : Interest Smartphone = if waktu = siang^city = Singapore^bulan = akhir Rule 30 : Interest Smartphone = if waktu = siang^city = Surabaya^type = Personal Computer^bulan = tengah

Rule 31 : Interest Smartphone = if waktu = siang^city = Surabaya^type = Smartphone^bulan = awal

Rule untuk interestMotorbike

Rule 1 : Interest Motorbike = if waktu = malam^city = Batam Rule 2 : Interest Motorbike = if waktu = malam^city = Boardman Rule 3 : Interest Motorbike = if waktu = malam^city = Depok

Rule 5 : Interest Motorbike = if waktu = malam^city = Jakarta^bulan = awal^type = Smartphone

Rule 6 : Interest Motorbike = if waktu = malam^city = Jakarta^bulan = tengah^type = Personal Computer

Rule 7 : Interest Motorbike = if waktu = malam^city = Jakarta^bulan = tengah^type = Smartphone

Rule 8 : Interest Motorbike = if waktu = malam^city = Kudus

Rule 9 : Interest Motorbike = if waktu = malam^city = Medan^bulan = awal Rule 10 : Interest Motorbike = if waktu = malam^city = Mountain View

Rule 11 : Interest Motorbike = if waktu = malam^city = Pontianak

Rule 12 : Interest Motorbike = if waktu = malam^city = San Mateo^bulan = akhir Rule 13 : Interest Motorbike = if waktu = malam^city = San Mateo^bulan = tengah^type = Smartphone

Rule 14 : Interest Motorbike = if waktu = malam^city = Surabaya^type = Personal Computer^bulan = awal

Rule 15 : Interest Motorbike = if waktu = malam^city = Surabaya^type = Smartphone^bulan = awal

Rule 16 : Interest Motorbike = if waktu = malam^city = Surabaya^type = Smaartphone^bulan = tengah

Rule 17 : Interest Motorbike = if waktu = malam^city = Tangerang

Rule 18 : Interest Motorbike = if waktu = pagi^bulan = akhir^city = Bekasi Rule 19 : Interest Motorbike = if waktu = pagi^bulan = awal^city = Mojokerto

Rule 20 : Interest Motorbike = if waktu = pagi^bulan = awal^city = Saragota

Dokumen terkait