Codeigniter, PHP, Programming

Program sederhana algoritma Naive Bayes menggunakan framework Codeigniter

Naive Bayes adalah pengklasifikasian statistik yang dapat digunakan untuk memprediksi probabilitas keanggotaan suatu class.

Misal terdapat data seperti berikut ini :

screen-shot-2016-12-08-at-10-41-13-am

Kita dapat mengklasifikasikan berdasarkan beberapa kelas seperti  :

Perbandingan class jenis kelamin Pria terhadap class kelulusan Tepat, atau perbandingan class Pekerjaan terhadap class status pernikahan Menikah, dan sebagainya.

Berikut ini adalah contoh program yang menerapkan algoritma naive bayes tersebut.

Source Controller NaiveBayes.php


<?php class NaiveBayes extends CI_Controller { function __construct() { parent::__construct(); } function index() { $data = $this->db->count_all('naivebayes');

    // data test
    $JK = "Wanita";
    $Kerja = "Bekerja";
    $StatusNikah = "Menikah";

    // hitung jumlah class
    $tepat = $this->db->get_where('naivebayes',array('status_kelulusan'=>'Tepat'))->num_rows();
    $terlambat = $this->db->get_where('naivebayes',array('status_kelulusan'=>'Terlambat'))->num_rows();

    // hitung jumlah kasus yang sama dengan class yang sama
    $JK_Tepat = $this->db->get_where('naivebayes',array('jenis_kelamin'=>$JK,'status_kelulusan'=>'Tepat'))->num_rows();
    $JK_Terlambat = $this->db->get_where('naivebayes',array('jenis_kelamin'=>$JK,'status_kelulusan'=>'Terlambat'))->num_rows();

    $Kerja_Tepat = $this->db->get_where('naivebayes',array('status_kerja'=>$Kerja,'status_kelulusan'=>'Tepat'))->num_rows();
    $Kerja_Terlambat = $this->db->get_where('naivebayes',array('status_kerja'=>$Kerja,'status_kelulusan'=>'Terlambat'))->num_rows();

    $StatusNikah_Tepat = $this->db->get_where('naivebayes',array('status_pernikahan'=>$StatusNikah,'status_kelulusan'=>'Tepat'))->num_rows();
    $StatusNikah_Terlambat = $this->db->get_where('naivebayes',array('status_pernikahan'=>$StatusNikah,'status_kelulusan'=>'Terlambat'))->num_rows();

    // testing Pria Mahasiswa Belum Nikah Tepat
    $testingTepat = ($JK_Tepat / $data) * ($Kerja_Tepat / $data) * ($StatusNikah_Tepat / $data);
    $testingTerlambat = ($JK_Terlambat / $data) * ($Kerja_Terlambat / $data) * ($StatusNikah_Terlambat / $data);

    echo $testingTepat . " > " . $testingTerlambat;

    if ($testingTepat > $testingTerlambat) {
      $result = "Tepat Lulus";
    } else {
      $result = "Terlambat Lulus";
    }
    echo $result;
  }
}

 ?>

Database NaiveBayes.sql


-- phpMyAdmin SQL Dump
-- version 4.4.6.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Dec 08, 2016 at 03:32 AM
-- Server version: 5.6.24
-- PHP Version: 5.5.25

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

--
-- Database: `project_algo`
--

-- --------------------------------------------------------

--
-- Table structure for table `naivebayes`
--

CREATE TABLE IF NOT EXISTS `naivebayes` (
  `id` int(11) NOT NULL,
  `jenis_kelamin` varchar(100) DEFAULT NULL,
  `status_kerja` varchar(100) DEFAULT NULL,
  `status_pernikahan` varchar(100) DEFAULT NULL,
  `ipk` varchar(50) DEFAULT NULL,
  `status_kelulusan` varchar(100) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `naivebayes`
--

INSERT INTO `naivebayes` (`id`, `jenis_kelamin`, `status_kerja`, `status_pernikahan`, `ipk`, `status_kelulusan`) VALUES
(1, 'Pria', 'Mahasiswa', 'Belum', '3.17', 'Tepat'),
(2, 'Pria', 'Bekerja', 'Belum', '3.30', 'Tepat'),
(3, 'Wanita', 'Mahasiswa', 'Belum', '3.01', 'Tepat'),
(4, 'Waninta', 'Mahasiswa', 'Menikah', '3.25', 'Tepat'),
(5, 'Pria', 'Mahasiswa', 'Belum', '3.17', 'Terlambat'),
(6, 'Pria', 'Bekerja', 'Belum', '3.30', 'Terlambat'),
(7, 'Wanita', 'Mahasiswa', 'Belum', '3.01', 'Terlambat'),
(8, 'Wanita', 'Mahasiswa', 'Menikah', '3.35', 'Terlambat'),
(9, 'Waninta', 'Bekerja', 'Menikah', '3.45', 'Tepat'),
(10, 'Pria', 'Mahasiswa', 'Menikah', '3.25', 'Terlambat'),
(11, 'Wanita', 'Bekerja', 'Menikah', '3.75', 'Tepat'),
(12, 'Wanita', 'Mahasiswa', 'Menikah', '3.55', 'Terlambat'),
(13, 'Pria', 'Mahasiswa', 'Belum', '3.17', 'Terlambat'),
(14, 'Pria', 'Bekerja', 'Belum', '3.30', 'Terlambat'),
(15, 'Wanita', 'Mahasiswa', 'Belum', '3.01', 'Terlambat'),
(16, 'Wanita', 'Mahasiswa', 'Menikah', '3.35', 'Terlambat'),
(17, 'Waninta', 'Bekerja', 'Menikah', '3.45', 'Tepat'),
(18, 'Pria', 'Mahasiswa', 'Menikah', '3.25', 'Terlambat'),
(19, 'Wanita', 'Bekerja', 'Menikah', '3.75', 'Tepat'),
(20, 'Wanita', 'Mahasiswa', 'Menikah', '3.55', 'Terlambat');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `naivebayes`
--
ALTER TABLE `naivebayes`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `naivebayes`
--
ALTER TABLE `naivebayes`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=21;

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s