Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
121 views

Source Code Program

Uploaded by

Noprian Rizki
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
121 views

Source Code Program

Uploaded by

Noprian Rizki
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 57

1. Klasifikasi_sekolah_c45/index.

php
<?php
header('location:admin/index.php');
// header('location:admin/user.php?module=home');
?>

Pada Folder Klasifikasi_sekolah_c45 terdapat 2 folder utama yaitu admin & config

2. Klasifikasi_sekolah_c45/config/adminstyle.css
.menupic{
background:transparent;
width:100%;
margin:0 auto;
}
.menuhorisontal{
background:#000000;
color:#FFFFFF;
width: 1200px;
height:30px;
margin:0 auto;
padding:0 auto;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;
}
.menuhorisontal ul{
margin: 0;
padding-left:0px;
font:
normal 12px Arial;
color:#FFFFFF;
text-transform:none;
list-style-type: none;
letter-spacing:.01em;
}
.menuhorisontal li{
display: inline;
margin: 0;
}
.menuhorisontal li a{
float: left;
display: block;
text-decoration:none;
margin: 0;padding: 8px 7px;
border-right: 0px solid #333;
color: #fff}

.menuhorisontal li a:visited{color: #fff;}

.menuhorisontal li a:hover {background:#f2f2f2; color:#000;text-decoration:none; /*Background Setelah


Pointer Diarahkan */
}

.menuhorisontal li.selected a {-moz-border-radius-topleft:6px;


background: #f2f2f2;font:bold 12px Segoe UI;text-transform:uppercase;
color: #000000;text-decoration:none;}
body{
font-family: Tahoma;
text-align: center;
}
body{
font-family: Tahoma;
text-align: center;
}
#header {
position: relative;
background-image: url(../admin/images/Untitled.png);
background-repeat: no-repeat;
margin-right: auto;
margin-left: auto;
width: 1200px;
border: 2px solid #000000;
padding-top: 80px;
text-align: left;
}

#content {
margin-left: 200px;
}
#content p {
font-size: 75%;
}
#menu {
position: absolute;
top: 110px;
left: 0;
width: 180px;
}
#menu ul {
list-style: none;
margin: 0;
padding: 0;
border: none;
}
#menu li {
width: 180px;
border-bottom: 1px solid #969BA5;
margin: 0;
padding: 0;
font-size: 80%;
vertical-align: bottom;
}
#menu a:link, #menu a:visited {
display: block;
padding: 5px 5px 5px 0.5em;
border-left: 12px solid #000000;
border-right: 1px solid #000000;
background-color: #CAD6EC;
color: #000000;
text-decoration: none;
}
#menu a:hover {
background-color: #000000;
color: #FFFFFF;
}

a:link,a:visited {
color:#000000;
}
a:hover {
color: #FF6600;
text-decoration:none;
}
h2 {
font: normal 120% Georgia;
color: #000000;
background-color: transparent;
border-bottom: 1px dotted #000000;
}
h3 {
font: normal 100% Georgia;
color: #000000;
background-color: transparent;
}

table {
font-family: Tahoma;
font-size: 8pt;
border-width: 1px;
border-style: solid;
border-color: #999999;
border-collapse: collapse;
margin: 10px 0px;
}
th{
color: #FFFFFF;
font-size: 7pt;
text-transform: uppercase;
text-align: center;
padding: 0.5em;
border-width: 1px;
border-style: solid;
border-color: #969BA5;
border-collapse: collapse;
background-color: #000000;
}
td{
padding: 0.5em;
vertical-align: top;
border-width: 1px;
border-style: solid;
border-color: #969BA5;
border-collapse: collapse;
}
input,textarea,select{
font-family: Tahoma;
font-size: 8pt;
}
#paging{
font-family: Tahoma;
font-size: 8pt;
}
#footer{
font-size: 70%;
color: #FFFFFF;
background-color: #000000;
text-align : center;

}
3. Klasifikasi_sekolah_c45/config/hitungWaktu.php
<?php
// Fungsi ini digunakan untuk menghitung waktu mulai
function timer_start() {
global $timestart;
$mtime = explode( ' ', microtime() );
$timestart = $mtime[1] + $mtime[0];
return true;
}
// Fungsi ini digunakan untuk menghitung waktu selesai
function timer_stop( $precision = 3 ) {
global $timestart, $timeend;
$mtime = microtime();
$mtime = explode( ' ', $mtime );
$timeend = $mtime[1] + $mtime[0];
$timetotal = $timeend - $timestart;
$r = number_format( $timetotal, $precision );
return $r;
}
4. Klasifikasi_sekolah_c45/config/koneksi.php
<?php
$server = "localhost";
$username = "root";
$password = "";
$database = "klasifikasi_sekolah_c45";
// Koneksi dan memilih database di server
mysql_connect($server,$username,$password) or die("Koneksi gagal");
mysql_select_db($database) or die("Database tidak bisa dibuka");
?>

5. Klasifikasi_sekolah_c45/admin/aksi.php
<?php
error_reporting(0);
function deleteAllDb()
{
// mysql_query("TRUNCATE atribut");
mysql_query("TRUNCATE data_sekolah");
mysql_query("TRUNCATE data_keputusan");
mysql_query("TRUNCATE data_keputusan_kinerja");

mysql_query("TRUNCATE iterasi_c45");
mysql_query("TRUNCATE mining_c45");
mysql_query("TRUNCATE pohon_keputusan_c45");
mysql_query("TRUNCATE rule_c45");

mysql_query("TRUNCATE rule_penentu_keputusan");
mysql_query("TRUNCATE data_penentu_keputusan");
}

// session_start();
include "../config/koneksi.php";
include "../config/library.php";

$module=$_GET[module];
$act=$_GET[act];

// hapus data sekolah per item


if ($module=='data_sekolah' AND $act=='hapus_data_sekolah'){
mysql_query("DELETE FROM data_sekolah WHERE id='$_GET[id]'");
echo "<script>alert('Data berhasil dihapus!');
document.location.href='media.php?module=data_sekolah';</script>\n";
}

// hapus semua data sekolah


elseif ($module=='data_sekolah' AND $act=='hapus_semua_data_sekolah'){
mysql_query("TRUNCATE `data_sekolah`");
deleteAllDb();
echo "<script>alert('Data berhasil dihapus!');
document.location.href='media.php?module=data_sekolah';</script>\n";
}
// Input data sekolah
elseif ($module=='data_sekolah' AND $act=='input'){
mysql_query("INSERT INTO data_sekolah VALUES('',
'$_POST[npsn]',
'$_POST[nama_sekolah]',
'$_POST[kecamatan]',
'$_POST[status_sekolah]',
'$_POST[tw_1]',
'$_POST[tw_2]',
'$_POST[tw_3]',
'$_POST[tahun]',
'$_POST[class]',
'$_POST[status_data]'
)");
echo "<script>alert('Data berhasil diinput!');
document.location.href='media.php?module=data_sekolah';</script>\n";
}
// Update Data Sekolah
elseif ($module=='data_sekolah' AND $act=='update_data_sekolah'){
mysql_query("UPDATE data_sekolah SET
npsn = '$_POST[npsn]',
nama_sekolah = '$_POST[nama_sekolah]',
kecamatan = '$_POST[kecamatan]',
status_sekolah = '$_POST[status_sekolah]',
tw_1 = '$_POST[tw_1]',
tw_2 = '$_POST[tw_2]',
tw_3 = '$_POST[tw_3]',
tahun = '$_POST[tahun]',
status_data = '$_POST[status_data]'
WHERE id = '$_POST[id]'");
echo "<script>alert('Data berhasil diupdate!');
document.location.href='media.php?module=data_sekolah';</script>\n";
}

// Hapus Semua Data Perhitungan C45


elseif ($module=='c45' AND $act=='hapus_data_iterasi'){
mysql_query("TRUNCATE `iterasi_c45`");
echo "<script>alert('Data berhasil dihapus!');
document.location.href='media.php?module=c45';</script>\n";
}

// Hapus Semua Data Pohon Keputusan C45


elseif ($module=='c45' AND $act=='hapus_pohon_keputusan'){
mysql_query("TRUNCATE `pohon_keputusan_c45`");
mysql_query("TRUNCATE `rule_c45`");
mysql_query("DELETE FROM rule_penentu_keputusan where pohon = 'C45'");
echo "<script>alert('Data berhasil dihapus!');
document.location.href='media.php?module=c45&act=pohon_keputusan';</script>\n";
}
// Hapus Semua Data Penentu Keputusan
elseif ($module=='penentu_keputusan' AND $act=='delete_data_penentu_keputusan'){
mysql_query("TRUNCATE `data_keputusan`");
echo "<script>alert('Data berhasil dihapus!');
document.location.href='media.php?module=penentu_keputusan';</script>\n";
}

// Hapus Semua Data Penentu Keputusan per Item


if ($module=='penentu_keputusan' AND $act=='hapus'){
mysql_query("DELETE FROM data_keputusan WHERE id='$_GET[id]'");
echo "<script>alert('Data berhasil dihapus!');
document.location.href='media.php?module=penentu_keputusan';</script>\n";
}

// Hapus Semua Data Kinerja


elseif ($module=='kinerja' AND $act=='hapus_data_kinerja'){
mysql_query("TRUNCATE `data_keputusan_kinerja`");
echo "<script>alert('Data berhasil dihapus!');
document.location.href='media.php?module=kinerja';</script>\n";
}
6. Klasifikasi_sekolah_c45/admin/cek_login.php
<?php
include "../config/koneksi.php";
$login=mysql_query("SELECT * FROM user WHERE id_user='$_POST[username]' AND
password='$_POST[password]'");
$ketemu=mysql_num_rows($login);
//fungsi mysql_fetch_array :menghasilkan struktur data dalam bentuk array asosiatif maupun
array numerik
$r=mysql_fetch_array($login);

// Apabila username dan password ditemukan


if ($ketemu > 0) {
session_start();
$_SESSION[namauser] = $r[id_user];
$_SESSION[passuser] = $r[password];
$_SESSION[leveluser]= $r[level];
// echo $_SESSION['leveluser'];
header('location:media.php?module=home');
} else {
echo "<script>alert('Login gagal! Username & Password tidak benar!');
document.location.href='index.php';</script>\n";
}
7. Klasifikasi_sekolah_c45/admin/content.php
<?php
include "../config/koneksi.php";
include "../config/library.php";
include "../config/fungsi_indotgl.php";
include "../config/hitungWaktu.php";
include "../config/paginate.php";
// Bagian Home
if ($_GET[module]=='home'){
echo "<h2>Aplikasi Klasifikasi Sekolah menggunakan Pohon Keputusan C4.5</h2>
<table width='100%'>
<tr>
<td>
<h2 align='justify'>
Selamat Datang.<br>
</h2>
</td>
</tr>
</table>";
}
// Modul Data
elseif ($_GET[module]=='data_sekolah'){
include "modul/data_sekolah.php";
}
// Modul C4.5
elseif ($_GET[module]=='c45'){
include "modul/c45.php";
}
// Modul about
elseif ($_GET[module]=='about'){
include "modul/about.php";
}
// Modul Penentu Keputusan
elseif ($_GET[module]=='penentu_keputusan'){
include "modul/penentu_keputusan.php";
}
// Modul Kinerja
elseif ($_GET[module]=='kinerja'){
include "modul/kinerja.php";
}
elseif ($_GET[module]=='layanan_sekolah'){
include "modul/layanan_sekolah_Admin.php";
}
elseif ($_GET[module]=='grafik'){
include "modul/grafik.php";
}
elseif ($_GET[module]=='pola_kelompok'){
include "modul/pola_kelompok.php";
}
else{
echo "<p><b>MENU BELUM ADA</b></p>";
}
?>

8. Klasifikasi_sekolah_c45/admin/CSS_login.css
* {
margin:0;
padding:0;
}
body {
background-color:#FFF;
color: #5EA0DD;
font-family:Verdana,Tahoma, Arial,Sans-serif;
font-size:14px;
}
a{
text-decoration:none;
background-color: transparent;
color:#3A62B7;
cursor:pointer;
}
a:link,a:visited{
background-color: transparent;
color:#3A62B7;
}
a:hover,a:active{
background-color: transparent;
color:#8C2026;
}
form.fl{
/* margin-top:100px; */
}
table.tb{
-moz-border-radius: 36px 36px 20px 20px;
border:1px solid #96C3F8;
background:transparent left top no-repeat;
margin:100px auto 0;
width:400px;
/*
background:transparent url(../images/bgTabel.jpg) left top no-repeat;
-moz-border-radius-topleft:36px;
-moz-border-radius-topright:36px;
opacity: .3;
*/
}
table.tb span.th{
font-size:1.1em;
font-weight:bold;
}
table.tb td{
padding:3px;
}
table.tb td.caption{
padding:5px 3px;
}
table.tb td.header{
background:transparent;
/* -moz-border-radius-topleft:20px;
-moz-border-radius-topright:20px;
background:transparent url(../images/bgTableHeader2.png) left top repeat-x;
color:#4F4D4A; */
padding:8px;
text-align:center;
font-family:verdana;
letter-spacing:1px;
font-weight:bold;
}
#info{
background:transparent url(../images/sopPasswd.png) center 2px no-repeat;
border: 1px solid #96C3F8;
top:0px;
left:0px;
width:99.9%;
height:0%;
position:absolute;
z-index: 99;
cursor:pointer;
/* opacity:0.8; */
}
#footer{
background:transparent center 2px no-repeat;
color:#86a3d8;
padding-top:80px;
}
#footer p{
padding:2px 0;
font-size:0.75em;
text-align:center;
}
iframe.AJAX_Target{
border:0px solid #fff;
height:0;
width:0;
}
.right{
text-align:right;
}
input[type="text"]:focus, input[type="password"]:focus, textarea:focus {
-moz-box-shadow: 0 0 8px rgba(82, 168, 236, 0.5);
border-color: rgba(82, 168, 236, 0.75) !important;
outline: medium none;
}
input{
-moz-border-radius:5px 5px 5px 5px;
border:1px solid #CCCCCC;
border:1px solid #5EA0DD;
padding:3px;
letter-spacing:1px;
color:#5EA0DD;
}
select,option{
padding:1px;
letter-spacing:1px;
color:#5EA0DD;
}
button{
cursor:pointer;
padding:2px 0;
color:#5EA0DD;
}
button img{
vertical-align:middle;
}

button span.txt{
font-weight:bold;
vertical-align:middle;
}
span.light{
color:#00F;
font-size:1.08em;
}
.forget{
color:#000;
font-size:0.7em;
}
a{
color:#B24D4D;
font-weight:bold;
}
a:link,a:visited{
color:#B24D4D;
}
a:active,a:hover{
color:#EB9309;
text-decoration:none;
}
9. Klasifikasi_sekolah_c45/admin/index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Login</title>
<link href="icon.png" rel="shortcut icon" type="image/png" />
<link href="CSS_login.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="mootools-1.2.1-core.js.php"></script>
<link href="icon.png" rel="shortcut icon" type="image/png" />
<script type="text/javascript" src="ardizorro-md5.js.php"></script>
<script type="text/javascript" src="login.js"></script>
</head>
<body>
<!-- <div id="info" title="Klik untuk Sembunyikan Informasi"><a id="showinfo"
title="Klik untuk Menampilkan Informasi" href="#">Sembunyikan Informasi</a></div> -->
<form method="POST" action="cek_login.php">
<table width="371" cellpadding="2px" cellspacing="2px" class="tb" >
<tr>
<td class="header" colspan="2" bgcolor="#CCCCCC" nowrap="nowrap"><p class="light"><img
src="logo-kemdikbud.png" alt="" width="97" height="91" /></p></td>
</tr>

<tr>
<td class="caption" colspan="2" align="center"><span class="light"><b>Aplikasi
Klasifikasi Sekolah menggunakan Menggunakan Algoritma C4.5</b></span></td>
</tr>

<tr>
<td width="127" nowrap="nowrap"><div class="right">Username</div></td>
<td width="228"><input style="cursor:help" title="Contoh: Admin" type="text"
name="username" id="username" size="25" maxlength="15"/></td>
</tr>
<tr>

<td nowrap="nowrap"><div class="right">Password</div></td>


<td><input type="password" name="password" id="password" size="25"
maxlength="32"/></td>
</tr>

<tr>
<td height="50">&nbsp;</td>
<td>
<input type="hidden" id="postForm" name="postForm" maxlength="32"
value="387bcfe8cb701b58a39196a6abb5f57a"/>
<button type="reset" id="btnReset" name="btnReset"><img src="1473847278_Reset.png"
width="21" height="20"/><span class="txt">Reset</span></button>
<button type="submit" id="btnLogin" name="btnLogin" value="Login"><img
src="1473847094_login.png" width="31" height="22"/><span class="txt">Login</span></button>
</td>
</tr>
</table>
</form>

<div id="footer">
<p>Copyright&copy; 2016 Dinas Pendidikan & Kebudayaan Provinsi Lampung:</p>
<p><b>Developed By Rizki Noprian</b></p>
</div>
</body>
</html>
10. Klasifikasi_sekolah_c45/admin/logout.php
<?php
session_start();
session_destroy();
header('location:index.php');
?>
11. Klasifikasi_sekolah_c45/admin/media.php
<?php
error_reporting(0);
session_start();
if (empty($_SESSION[namauser]) AND empty($_SESSION[passuser])){
echo "<link href='../config/adminstyle.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=index.php><b>LOGIN</b></a></center>";
} else {
?>
<html>
<head>
<title>Aplikasi Klasifikasi Sekolah menggunakan Pohon Keputusan C4.5</title>
<link href="icon.png" rel="shortcut icon" type="image/png" />
<link href="../config/adminstyle.css" rel="stylesheet" type="text/css" />
</head>
<body>

<div id="header">
<br>
<div class='menupic'>
<div class='menuhorisontal'>

</div>
</div>

<div id="content">
<?php include "content.php"; ?>
</div>

<div id="menu">
<br><ul>
<?php echo "
<li><a href=?module=home>.: Home</a></li>
<li><a href=?module=data_sekolah>.: Data Sekolah</a></li>
<li><a href=?module=data_sekolah&act=partisi_data>.: Partisi Data</a></li>
<li><a href=?module=c45>.: C.45 &#187; Perhitungan</a></li>
<li><a href=?module=c45&act=mining>.: C.45 &#187; Proses Mining</a></li>
<li><a href=?module=c45&act=pohon_keputusan>.: C.45 &#187; Pohon
Keputusan</a></li>
<li><a href=?module=kinerja>.: Kinerja &#187; Perbandingan</a></li>
<li><a href=?module=kinerja&act=lakukan_kinerja onClick=\"return confirm('Anda
Yakin? Proses akan membutuhkan waktu yang lama.')\">.: Kinerja &#187; Proses Kinerja</a></li>
<li><a href=?module=kinerja&act=tabel_penilaian>.: Kinerja &#187; Tabel
Penilaian</a></li>
<li><a href=?module=penentu_keputusan>.: Penentu Keputusan</a></li>
<li><a href=?module=pola_kelompok>.: Pola Kelompok</a></li>
<li><a href=?module=grafik>.: Grafik</a></li>
<li><a href=logout.php>.: Logout</a></li>
"; ?>
</ul>
<p>&nbsp;</p>
</div>
<div id="footer">
<p>Copyright&copy; 2016 Dinas Pendidikan & Kebudayaan Provinsi Lampung by<br />
<b>Developed by RIZKI NOPRIAN</b></p>
</div>
</div>
</body>
</html>
<?php
}
?>

12. Klasifikasi_sekolah_c45/admin/modul/adminstyle.css
body{
font-family: Tahoma;
text-align: center;
}
#header {
position: relative;
background-image: url(../admin/images/Untitled.png);
background-repeat: no-repeat;
margin-right: auto;
margin-left: auto;
width: 1024px;
border: 2px solid #000000;
padding-top: 70px;
text-align: left;
}
#content {
margin-left: 200px;
}
#content p {
font-size: 75%;
}
#menu {
position: absolute;
top: 90px;
left: 0;
width: 180px;
}
#menu ul {
list-style: none;
margin: 0;
padding: 0;
border: none;
}
#menu li {
width: 180px;
border-bottom: 1px solid #969BA5;
margin: 0;
padding: 0;
font-size: 80%;
vertical-align: bottom;
}
#menu a:link, #menu a:visited {
display: block;
padding: 5px 5px 5px 0.5em;
border-left: 12px solid #000000;
border-right: 1px solid #000000;
background-color: #CAD6EC;
color: #000000;
text-decoration: none;
}
#menu a:hover {
background-color: #000000;
color: #FFFFFF;
}

a:link,a:visited {
color:#000000;
}
a:hover {
color: #FF6600;
text-decoration:none;
}
h2 {
font: normal 120% Georgia;
color: #000000;
background-color: transparent;
border-bottom: 1px dotted #000000;
}
table {
font-family: Tahoma;
font-size: 8pt;
border-width: 1px;
border-style: solid;
border-color: #999999;
border-collapse: collapse;
margin: 10px 0px;
}
th{
color: #000000;
font-size: 7pt;
text-transform: uppercase;
text-align: center;
padding: 0.5em;
border-width: 1px;
border-style: solid;
border-color: #969BA5;
border-collapse: collapse;
background-color: #00CCFF;
}
td{
padding: 0.5em;
vertical-align: top;
border-width: 1px;
border-style: solid;
border-color: #969BA5;
border-collapse: collapse;
}
input,textarea,select{
font-family: Tahoma;
font-size: 8pt;
}
#paging{
font-family: Tahoma;
font-size: 8pt;
}
#footer{
font-size: 70%;
color: #FFFFFF;
background-color: #000000;
text-align : center;

13. Klasifikasi_sekolah_c45/admin/modul/c45.php
<?php
switch($_GET[act]){
default:
echo "<h2>C45 &#187; Perhitungan C4.5</h2>";
// include "menu_c45.php";
echo "
<table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'>
<tr>
<th>No</th>
<th>Atribut Gain Ratio Max</th>
<th>Atribut</th>
<th>Nilai Atribut</th>
<th>Jumlah Kasus Total</th>
<th>Jumlah Kasus Rendah</th>
<th>Jumlah Kasus Sedang</th>
<th>Jumlah Kasus Tinggi</th>
<th>Entropy</th>
<th>Information Gain</th>
<th>Split Info</th>
<th>Gain Ratio</th>
</tr>";

if ($_SESSION[leveluser]=='admin'){
$sql=mysql_query('SELECT * FROM iterasi_c45 ORDER BY id');
}
$warna1 = '#FFFFFF';
$warna2 = '#CCFFFF';
$warna = $warna1;

while ($data=mysql_fetch_array($sql)){
if($warna == $warna1){
$warna = $warna2;
} else {
$warna = $warna1;
}
echo " <tr bgcolor='$warna'>
<td>$data[iterasi]</td>
<td>$data[atribut_gain_ratio_max]</td>
<td>$data[atribut]</td>
<td>$data[nilai_atribut]</td>
<td>$data[jml_kasus_total]</td>
<td>$data[jml_kasus_rendah]</td>
<td>$data[jml_kasus_sedang]</td>
<td>$data[jml_kasus_tinggi]</td>
<td>$data[entropy]</td>
<td>$data[inf_gain]</td>
<td>$data[split_info]</td>
<td>$data[gain_ratio]</td>
</tr>";
}
echo"</table>";
break;
case "mining";
echo "<h2>C45 &#187; Mining C4.5</h2>";
// include "menu_c45.php";
echo "<form method=POST action=''>
<table>
<tr>
<td>Proses C4.5 : </td>
<td>
<select name='proses' type='text'>
<option value='pruning'>dengan pruning</option>
<option value='nonpruning'>tanpa pruning</option>
</select>
</td>

<td colspan=2>
<input type=submit name=submit value=Proses>
</td>
</tr>
</table>
</form>";
if (isset($_POST['submit'])) {
if ($_POST['proses'] == 'pruning') {
$kondisi = "miningPrePruningC45";
} else {
$kondisi = "miningC45";
}
// include "menu_c45.php";

$sql=mysql_query("SELECT COUNT(*) FROM data_sekolah WHERE status_data = 'Data


Training'");
$data=mysql_fetch_array($sql);
if (empty($data)) {
echo "<script>alert('Data Training Kosong, Harap Input Data Training!');
document.location.href='media.php?module=c45';</script>\n";
} else {
timer_start();
include "function/$kondisi.php";
include "function/miningPrePruningC45.php";
$waktu = timer_stop(3);
echo "<p>Proses Mining Selesai! Waktu yang dibutuhkan $waktu detik</p>";
}
}

break;
case "pohon_keputusan";
include "pohon_keputusan_c45.php";
break;
}
14. Klasifikasi_sekolah_c45/admin/modul/data_sekolah.php
<?php
switch($_GET[act]){
default:
echo "<h2>Data Sekolah</h2>";
// include "menu_data_sekolah.php";
include "form_data_sekolah.php";

echo "
<form method=POST action='modul/export_data_sekolah.php'>
<table>
<tr>
<td>Export Data Tahun</td>
<td>:
<select name='tahun' type='text'>
<option value='2012'>2012</option>
<option value='2013'>2013</option>
<option value='2014'>2014</option>
<option value='2015'>2015</option>
<option value='2016'>2016</option>
</select>
</td>
</tr>

<tr>
<td colspan=2>
<input type='submit' name='submitx' value='Export'>
</td>
</tr>
</table>
</form>";

include "upload_csv.php";

$per_page = 15; // number of results to show per page


if ($_SESSION[leveluser]=='admin'){
$result=mysql_query("SELECT * FROM data_sekolah");
}
$total_results = mysql_num_rows($result);
$total_pages = ceil($total_results / $per_page);//total pages we going to have
$warna1 = '#FFFFFF';
$warna2 = '#CCFFFF';
$warna = $warna1;

//-------------if page is setcheck------------------//


if (isset($_GET['page'])) {
$show_page = $_GET['page']; //it will telles the current page
if ($show_page > 0 && $show_page <= $total_pages) {
$start = ($show_page - 1) * $per_page;
$end = $start + $per_page;
} else {
// error - show first set of results
$start = 0;
$end = $per_page;
}
} else {
// if page isn't set, show first set of results
$start = 0;
$end = $per_page;
}
// display pagination
$page = intval($_GET['page']);

$tpages=$total_pages;
if ($page <= 0)
$page = 1;
$reload = $_SERVER['PHP_SELF'] . "?module=data_sekolah&act=data_sekolah&tpages=" .
$tpages;
if ($total_pages > 1) {
echo paginate($reload, $show_page, $total_pages);
}

echo "<table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'>


<tr>
<th>No</th>
<th>npsn</th>
<th>nama sekolah</th>
<th>kecamatan</th>
<th>status sekolah</th>
<th>tw 1</th>
<th>tw 2</th>
<th>tw 3</th>
<th>tahun</th>
<th>class</th>
<th>Status Data</th>
<th>Opsi</th>
</tr>";

for ($i = $start; $i < $end; $i++) {


// make sure that PHP doesn't try to show results that don't
exist
if ($i == $total_results) {
break;
}
$num = $i +1;
echo '<tr bgcolor=' . $warna . '>
<td>'.$num.'</td>
<td>' . mysql_result($result, $i, 'npsn') . '</td>
<td>' . mysql_result($result, $i, 'nama_sekolah') . '</td>
<td>' . mysql_result($result, $i, 'kecamatan') . '</td>
<td>' . mysql_result($result, $i, 'status_sekolah') . '</td>
<td>' . mysql_result($result, $i, 'tw_1') . '</td>
<td>' . mysql_result($result, $i, 'tw_2') . '</td>
<td>' . mysql_result($result, $i, 'tw_3') . '</td>
<td>' . mysql_result($result, $i, 'tahun') . '</td>
<td>' . mysql_result($result, $i, 'class') . '</td>
<td>' . mysql_result($result, $i, 'status_data') . '</td>
<td><a href=?module=data_sekolah&act=edit_data_sekolah&id=' .
mysql_result($result, $i, 'id').'>Edit</a> |
<a href=./aksi.php?module=data_sekolah&act=hapus_data_sekolah&id=' .
mysql_result($result, $i, 'id').'>Hapus</a>
</td>
</tr>';
$no++;
}
echo"</table>";
break;

case "edit_data_sekolah";
echo "<h2>Data Sekolah &#187; Edit Data Sekolah</h2>";
// include "menu_data_sekolah.php";
include "form_edit_data_sekolah.php";
break;

case "partisi_data";
include "partisi_data.php";
break;
}
15. Klasifikasi_sekolah_c45/admin/modul/export_data_sekolah.php
<?php
error_reporting(0);
include "../../config/koneksi.php";
$arrayDb = array();
$string = "NO, NPSN, NAMA SEKOLAH, STATUS SEKOLAH, KECAMATAN, TAHUN, CLASS
";

// ambil data
$no = 1;
$sqlGetData = mysql_query("SELECT * FROM data_sekolah WHERE tahun = '$_POST[tahun]'");
while($rowGetData = mysql_fetch_array($sqlGetData)) {
$stringDb = "$no, $rowGetData[npsn], $rowGetData[nama_sekolah], $rowGetData[status_sekolah],
$rowGetData[kecamatan], $rowGetData[tahun], $rowGetData[class]";
$array[] = $stringDb;
$arrayDb[] = $array;
$no++;
}

$transform = array("212" => "2012",


"213" => "2013",
"214" => "2014",
"215" => "2015",
"216" => "2016"
);
// $transform = array(""
// );

foreach ($arrayDb as $arrayTransform) {


$arrayTransform2 = $arrayTransform;
}

foreach ($arrayTransform2 as $arrayTransform3) {


$string2 = strtr("$arrayTransform3", $transform);
$string .= "$string2
";
}

$stringData = $string;
header("Content-Disposition: attachment;filename=export_data_sekolah_" . $_POST['tahun'] .
".csv ");
echo "$stringData"; // tampilkan data

16. Klasifikasi_sekolah_c45/admin/modul/export_penentu_keputusan.php
<?php
error_reporting(0);
include "../../config/koneksi.php";
$arrayDb = array();
$string = "NO, NPSN, NAMA SEKOLAH, STATUS SEKOLAH, KECAMATAN, TAHUN, CLASS
";
// ambil data
$no = 1;
$sqlGetData = mysql_query("SELECT * FROM data_keputusan");
while($rowGetData = mysql_fetch_array($sqlGetData)) {
$stringDb = "$no, $rowGetData[npsn], $rowGetData[nama_sekolah], $rowGetData[status_sekolah],
$rowGetData[kecamatan], $rowGetData[tahun], $rowGetData[keputusan_c45]";
$array[] = $stringDb;
$arrayDb[] = $array;
$no++;
}
$transform = array("212" => "2012",
"213" => "2013",
"214" => "2014",
"215" => "2015",
"216" => "2016"
);

foreach ($arrayDb as $arrayTransform) {


$arrayTransform2 = $arrayTransform;
}

foreach ($arrayTransform2 as $arrayTransform3) {


$string2 = strtr("$arrayTransform3", $transform);
$string .= "$string2
";
}
$stringData = $string;
header("Content-Disposition: attachment;filename=export_penentu_keputusan.csv ");
echo "$stringData"; // tampilkan data

17. Klasifikasi_sekolah_c45/admin/modul/export_pola_kelompok.php
<?php
error_reporting(0);
include "../../config/koneksi.php";
$arrayDb = array();
$string = "NO, NPSN, NAMA SEKOLAH, STATUS SEKOLAH, TAHUN, CLASS
";
// ambil data
$no = 1;
$sqlGetData = mysql_query("SELECT * FROM data_sekolah WHERE $_GET[query1] like
'%$_GET[query2]%'");
while($rowGetData = mysql_fetch_array($sqlGetData)) {
$stringDb = "$no, $rowGetData[npsn], $rowGetData[nama_sekolah], $rowGetData[status_sekolah],
$rowGetData[tahun], $rowGetData[class]";
$array[] = $stringDb;
$arrayDb[] = $array;
$no++;
}

$transform = array("212" => "2012",


"213" => "2013",
"214" => "2014",
"215" => "2015",
"216" => "2016"
);
// $transform = array(""
// );

foreach ($arrayDb as $arrayTransform) {


$arrayTransform2 = $arrayTransform;
}

foreach ($arrayTransform2 as $arrayTransform3) {


$string2 = strtr("$arrayTransform3", $transform);
$string .= "$string2
";
}
$stringData = $string;
header("Content-Disposition: attachment;filename=export_pola_kelompok_" . $_GET['query1'] .
"_" . $_GET['query2'] . ".csv ");
echo "$stringData"; // tampilkan data

18. Klasifikasi_sekolah_c45/admin/modul/form_data_sekolah.php
<?php
echo "
<form method=POST action='./aksi.php?module=data_sekolah&act=input'>
<table>
<tr>
<td colspan=2><b><center>Input Data Sekolah</center></b></td>
</tr>";

include "form_sekolah.php";

echo "<tr>
<td><b>class<b></td>
<td>:
<select name='class' type='text'>
<option value='Rendah'>Rendah</option>
<option value='Sedang'>Sedang</option>
<option value='Tinggi'>Tinggi</option>
</select>
</td>
</tr>
<tr>
<td><b>Status Data<b></td>
<td>:
<select name='status_data' type='text'>
<option value='Data Training'>Data Training</option>
<option value='Data Testing'>Data Testing</option>
</select>
</td>
</tr>
<tr>
<td colspan=2>
<input type=submit value=Input>
</td>
</tr>
</table>
</form>";
?>

19. Klasifikasi_sekolah_c45/admin/modul/form_edit_data_sekolah.php
<html>
<?php
$query = mysql_query("SELECT * FROM data_sekolah WHERE id='$_GET[id]'");
$data = mysql_fetch_array($query);

function viewForm($atribut, $atributx) {


$query = mysql_query("SELECT * FROM data_sekolah WHERE id='$_GET[id]'");
$data = mysql_fetch_array($query);
echo "<tr>
<td>$atributx</td>
<td>:
<input name='$atribut' value='$data[$atribut]' type='text'>
</td>
</tr>";
}

function viewFormSelect($atribut, $atributx) {


$query = mysql_query("SELECT * FROM data_sekolah WHERE id='$_GET[id]'");
$data = mysql_fetch_array($query);
echo "<tr>
<td>$atributx</td>
<td>:
<select name='$atribut' type='text'>
<option value='$data[$atribut]' selected='selected'>$data[$atribut]</option>";
$sqlData1 = mysql_query("SELECT * FROM atribut where atribut = '$atribut'");
while($rowData1 = mysql_fetch_array($sqlData1)) {
echo "<option value='$rowData1[nilai_atribut]'>$rowData1[nilai_atribut]";
}
echo "</option>
</select>
</td>
</tr>";
}

?>
<form method=POST action='./aksi.php?module=data_sekolah&act=update_data_sekolah'>
<input type=hidden name=id value=<?php echo "$data[id]"; ?>>
<table>
<tr>
<td colspan=2><b><center>Edit Data Sekolah</center></b></td>
</tr>

<?php
viewForm('npsn', 'npsn');
viewForm('nama_sekolah', 'nama sekolah');
viewFormSelect('kecamatan', 'kecamatan');
viewFormSelect('status_sekolah', 'status sekolah');
viewFormSelect('tw_1', 'tw 1');
viewFormSelect('tw_2', 'tw 2');
viewFormSelect('tw_3', 'tw 3');
// viewFormSelect('tahun', 'tahun');
?>
<tr>
<td>tahun</td>
<td>:
<select name='tahun' type='text'>
<option value='<?php echo "$data[tahun]"; ?>' selected='selected'><?php echo
"$data[tahun]"; ?></option>
<option value='2012'>2012</option>
<option value='2013'>2013</option>
<option value='2014'>2014</option>
<option value='2015'>2015</option>
<option value='2016'>2016</option>
</select>
</td>
</tr>

<tr>
<td><b>Class<b></td>
<td>:
<select name='class' type='text'>
<option value='<?php echo "$data[class]"; ?>' selected='selected'><?php echo
"$data[class]"; ?></option>
<option value='Rendah'>Rendah</option>
<option value='Sedang'>Sedang</option>
<option value='Tinggi'>Tinggi</option>
</select>
</td>
</tr>

<tr>
<td><b>Status Data<b></td>
<td>:
<select name='status_data' type='text'>
<option value='<?php echo "$data[status_data]"; ?>' selected='selected'><?php echo
"$data[status_data]"; ?></option>
<option value='Data Training'>Data Training</option>
<option value='Data Testing'>Data Testing</option>
</select>
</td>
</tr>
<tr>
<td colspan=2>
<input type='submit' value='Simpan'><input type='button' value='Batal'
onclick='self.history.back()'>
</td>
</tr>
</table>
</form>
</html>

20. Klasifikasi_sekolah_c45/admin/modul/form_penentu_keputusan.php
<?php
echo "
<form method=POST action='modul/function/penentuKeputusan.php'>
<table>
<tr>
<td colspan=2><b><center>Input Data</center></b></td>
</tr>";

include "form_sekolah.php";
echo "<tr>
<td colspan=2>
<input type=submit value=Input>
</td>
</tr>
</table>
</form>";

21. Klasifikasi_sekolah_c45/admin/modul/form_sekolah.php
<?php
function viewForm($atribut, $atributx) {
echo "<tr>
<td>$atributx</td>
<td>:
<input name='$atribut' type='text'>
</td>
</tr>";
}
function viewFormSelect($atribut, $atributx) {
echo "<tr>
<td>$atributx</td>
<td>:
<select name='$atribut' type='text'>";
$sqlData1 = mysql_query("SELECT * FROM atribut where atribut = '$atribut'");
while($rowData1 = mysql_fetch_array($sqlData1)) {
echo "<option value='$rowData1[nilai_atribut]'>$rowData1[nilai_atribut]";
}
echo "</option>
</select>
</td>
</tr>";
}
viewForm('npsn', 'npsn');
viewForm('nama_sekolah', 'nama sekolah');
viewFormSelect('kecamatan', 'kecamatan');
viewFormSelect('status_sekolah', 'status sekolah');
viewFormSelect('tw_1', 'tw 1');
viewFormSelect('tw_2', 'tw 2');
viewFormSelect('tw_3', 'tw 3');
// viewFormSelect('tahun', 'tahun');
?>
<tr>
<td>tahun</td>
<td>:
<select name='tahun' type='text'>
<option value='2012'>2012</option>
<option value='2013'>2013</option>
<option value='2014'>2014</option>
<option value='2015'>2015</option>
<option value='2016'>2016</option>
</select>
</td>
</tr>
24. Klasifikasi_sekolah_c45/admin/modul/grafik_5_tahun.php
<?php

include ("../../config/modul/jpgraph.php");
include ("../../config/modul/jpgraph_line.php");
include ("../../config/modul/jpgraph_bar.php");
include ("../../config/koneksi.php");
include ("../../config/en.inc.php");
// include ("../../admin/modul/function/generateGrafikTahun.php");
$dataRendah = array();
$dataSedang = array();
$dataTinggi = array();
$datatahun = array();

$query = "SELECT * FROM grafik_tahun where kecamatan = '$_GET[kecamatan]' order by tahun


DESC";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
// menambahkan data hasil query ke array
array_unshift($datatahun, $data['tahun']);
array_unshift($dataRendah, $data['rendah']);
array_unshift($dataSedang, $data['sedang']);
array_unshift($dataTinggi, $data['tinggi']);
}

// membuat image dengan ukuran 400x200 px


$graph = new Graph(1000,500,"auto");
$graph->SetScale("textlin");

// menampilkan diagram batang untuk data Rendah dengan warna orange


// pada diagram batang ditampilkan value data
$bplot1 = new BarPlot($dataRendah);
$bplot1->SetFillColor("red");
$bplot1->value->show();

// menampilkan diagram batang untuk data Sedang dengan warna biru


// pada diagram batang ditampilkan value data
$bplot2 = new BarPlot($dataSedang);
$bplot2->SetFillColor("green");
$bplot2->value->show();

$bplot3 = new BarPlot($dataTinggi);


$bplot3->SetFillColor("blue");
$bplot3->value->show();
// mengelompokkan grafik batang berdasarkan Rendah dan Sedang
$gbplot = new GroupBarPlot(array($bplot1,$bplot2,$bplot3));
$graph->Add($gbplot);
// membuat legend untuk keterangan Rendah dan Sedang
$bplot1->SetLegend("Rendah");
$bplot2->SetLegend("Sedang");
$bplot3->SetLegend("Tinggi");
$graph->legend->Pos(0.05,0.5,"right","center");
// mengatur margin image
$graph->img->SetMargin(40,110,50,40);
// menampilkan title grafik dan nama masing-masing sumbu
$graph->title->Set("");
// $graph->xaxis->title->Set("kecamatan");
$graph->yaxis->title->Set("Jumlah");
// menampilkan nama kecamatan ke sumbu x
$graph->xaxis->SetTickLabels($datatahun);
// format font title grafik
$graph->title->SetFont(FF_FONT1,FS_BOLD);
// menampilkan efek shadow pada image
$graph->SetShadow();
// menampilkan image ke browser
$graph->Stroke();
?>

25. Klasifikasi_sekolah_c45/admin/modul/grafik_tahun_2012.php (utk >2012 sama)


<?php
include ("../../config/modul/jpgraph.php");
include ("../../config/modul/jpgraph_line.php");
include ("../../config/modul/jpgraph_bar.php");
include ("../../config/koneksi.php");
include ("../../config/en.inc.php");
include ("../../admin/modul/function/generateGrafikTahun.php");
$dataRendah = array();
$dataSedang = array();
$dataTinggi = array();
$datakecamatan = array();

$query = "SELECT * FROM grafik_tahun where tahun = '2012' order by kecamatan DESC";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
// menambahkan data hasil query ke array
array_unshift($datakecamatan, $data['kecamatan']);
array_unshift($dataRendah, $data['rendah']);
array_unshift($dataSedang, $data['sedang']);
array_unshift($dataTinggi, $data['tinggi']);
}

// membuat image dengan ukuran 400x200 px


$graph = new Graph(3000,800,"auto");
$graph->SetScale("textlin");

// menampilkan diagram batang untuk data Rendah dengan warna orange


// pada diagram batang ditampilkan value data
$bplot1 = new BarPlot($dataRendah);
$bplot1->SetFillColor("red");
$bplot1->value->show();

// menampilkan diagram batang untuk data Sedang dengan warna biru


// pada diagram batang ditampilkan value data
$bplot2 = new BarPlot($dataSedang);
$bplot2->SetFillColor("green");
$bplot2->value->show();

$bplot3 = new BarPlot($dataTinggi);


$bplot3->SetFillColor("blue");
$bplot3->value->show();

// mengelompokkan grafik batang berdasarkan Rendah dan Sedang


$gbplot = new GroupBarPlot(array($bplot1,$bplot2,$bplot3));
$graph->Add($gbplot);
// membuat legend untuk keterangan Rendah dan Sedang
$bplot1->SetLegend("Rendah");
$bplot2->SetLegend("Sedang");
$bplot3->SetLegend("Tinggi");
$graph->legend->Pos(0.05,0.5,"right","center");
// mengatur margin image
$graph->img->SetMargin(40,110,50,40);
// menampilkan title grafik dan nama masing-masing sumbu
$graph->title->Set("Grafik Kelompok");
// $graph->xaxis->title->Set("kecamatan");
$graph->yaxis->title->Set("Jumlah");
// menampilkan nama kecamatan ke sumbu x
$graph->xaxis->SetTickLabels($datakecamatan);
// format font title grafik
$graph->title->SetFont(FF_FONT1,FS_BOLD);
// menampilkan efek shadow pada image
$graph->SetShadow();
// menampilkan image ke browser
$graph->Stroke();
?>

26. Klasifikasi_sekolah_c45/admin/modul/kinerja.php
<?php
switch($_GET[act]){
default:
echo "<h2>Kinerja &#187; Tabel Perbandingan Keputusan</h2>";
// include "menu_kinerja.php";
echo "<p>Opsi: <a href=./aksi.php?module=kinerja&act=hapus_data_kinerja>Hapus Semua
Data</a></p>";
$per_page = 30; // number of results to show per page
if ($_SESSION[leveluser]=='admin'){
$result=mysql_query("SELECT * FROM data_keputusan_kinerja");
}
$total_results = mysql_num_rows($result);
$total_pages = ceil($total_results / $per_page);//total pages we going to have
$warna1 = '#FFFFFF';
$warna2 = '#CCFFFF';
$warna = $warna1;

//-------------if page is setcheck------------------//


if (isset($_GET['page'])) {
$show_page = $_GET['page']; //it will telles the current page
if ($show_page > 0 && $show_page <= $total_pages) {
$start = ($show_page - 1) * $per_page;
$end = $start + $per_page;
} else {
// error - show first set of results
$start = 0;
$end = $per_page;
}
} else {
// if page isn't set, show first set of results
$start = 0;
$end = $per_page;
}
// display pagination
$page = intval($_GET['page']);

$tpages=$total_pages;
if ($page <= 0)
$page = 1;

$reload = $_SERVER['PHP_SELF'] . "?module=kinerja&act=lihat_data&tpages=" . $tpages;


if ($total_pages > 1) {
echo paginate($reload, $show_page, $total_pages);
}

echo "<table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'>


<tr>
<th>No</th>
<th>npsn</th>
<th>nama sekolah</th>
<th>kecamatan</th>
<th>status sekolah</th>
<th>tw 1</th>
<th>tw 2</th>
<th>tw 3</th>
<th>tahun</th>
<th>Keputusan Asli</th>
<th>Keputusan C4.5<br>ID Rule C4.5</th>
</tr>";

for ($i = $start; $i < $end; $i++) {


// make sure that PHP doesn't try to show results that don't exist
if ($i == $total_results) {
break;
}
$num = $i +1;
echo '<tr bgcolor=' . $warna . '>
<td>'.$num.'</td>
<td>' . mysql_result($result, $i, 'npsn') . '</td>
<td>' . mysql_result($result, $i, 'nama_sekolah') . '</td>
<td>' . mysql_result($result, $i, 'kecamatan') . '</td>
<td>' . mysql_result($result, $i, 'status_sekolah') . '</td>
<td>' . mysql_result($result, $i, 'tw_1') . '</td>
<td>' . mysql_result($result, $i, 'tw_2') . '</td>
<td>' . mysql_result($result, $i, 'tw_3') . '</td>
<td>' . mysql_result($result, $i, 'tahun') . '</td>
<td>' . mysql_result($result, $i, 'keputusan_asli') . '</td>
<td>' . mysql_result($result, $i, 'keputusan_c45') . '<br>' . mysql_result($result,
$i, 'id_rule_c45') . '</td>
</tr>';
$no++;
}
echo"</table>";

break;
case "tabel_penilaian";
function countKeputusan($nilai_keputusan_asli)
{
$sql = mysql_query("SELECT count(id) as id FROM data_keputusan_kinerja where
keputusan_asli = '$nilai_keputusan_asli'");
while($row = mysql_fetch_array($sql)) {
$count = "$row[id]";
}
return $count;
}

function countKeputusankinerja($atribut1, $nilai_atribut1, $atribut2, $nilai_atribut2)


{
$sql = mysql_query("SELECT count(id) as id FROM data_keputusan_kinerja where $atribut1
= '$nilai_atribut1' AND $atribut2 = '$nilai_atribut2'");
while($row = mysql_fetch_array($sql)) {
$count = "$row[id]";
}
return $count;
}

function perbandingan()
{
$Tinggi = countKeputusan($nilai_keputusan_asli = 'Tinggi');
$Sedang = countKeputusan($nilai_keputusan_asli = 'Sedang');
$Rendah = countKeputusan($nilai_keputusan_asli = 'Rendah');

$TinggiC45IdentifikasiSedang = countKeputusankinerja($atribut1 = 'keputusan_asli',


$nilai_atribut1 = 'Tinggi', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Sedang');
$TinggiC45IdentifikasiTinggi = countKeputusankinerja($atribut1 = 'keputusan_asli',
$nilai_atribut1 = 'Tinggi', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Tinggi');
$TinggiC45IdentifikasiRendah = countKeputusankinerja($atribut1 = 'keputusan_asli',
$nilai_atribut1 = 'Tinggi', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Rendah');
$TinggiC45IdentifikasiNull = countKeputusankinerja($atribut1 = 'keputusan_asli',
$nilai_atribut1 = 'Tinggi', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Null');

$SedangC45IdentifikasiSedang = countKeputusankinerja($atribut1 = 'keputusan_asli',


$nilai_atribut1 = 'Sedang', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Sedang');
$SedangC45IdentifikasiTinggi = countKeputusankinerja($atribut1 = 'keputusan_asli',
$nilai_atribut1 = 'Sedang', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Tinggi');
$SedangC45IdentifikasiRendah = countKeputusankinerja($atribut1 = 'keputusan_asli',
$nilai_atribut1 = 'Sedang', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Rendah');
$SedangC45IdentifikasiNull = countKeputusankinerja($atribut1 = 'keputusan_asli',
$nilai_atribut1 = 'Sedang', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Null');

$RendahC45IdentifikasiSedang = countKeputusankinerja($atribut1 = 'keputusan_asli',


$nilai_atribut1 = 'Rendah', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Sedang');
$RendahC45IdentifikasiTinggi = countKeputusankinerja($atribut1 = 'keputusan_asli',
$nilai_atribut1 = 'Rendah', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Tinggi');
$RendahC45IdentifikasiRendah = countKeputusankinerja($atribut1 = 'keputusan_asli',
$nilai_atribut1 = 'Rendah', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Rendah');
$RendahC45IdentifikasiNull = countKeputusankinerja($atribut1 = 'keputusan_asli',
$nilai_atribut1 = 'Rendah', $atribut2 = 'keputusan_c45', $nilai_atribut2 = 'Null');

$precision_tinggi = round((($TinggiC45IdentifikasiTinggi /
($TinggiC45IdentifikasiTinggi + $SedangC45IdentifikasiTinggi + $RendahC45IdentifikasiTinggi))
* 100), 2);
$recall_tinggi = round((($TinggiC45IdentifikasiTinggi / ($TinggiC45IdentifikasiTinggi
+ $TinggiC45IdentifikasiSedang + $TinggiC45IdentifikasiRendah)) * 100), 2);
$fmeasure_tinggi =
round(((2*($precision_tinggi*$recall_tinggi)/($precision_tinggi+$recall_tinggi)) *1),2);

$precision_sedang = round((($SedangC45IdentifikasiSedang /
($TinggiC45IdentifikasiSedang + $SedangC45IdentifikasiSedang + $RendahC45IdentifikasiSedang))
* 100), 2);
$recall_sedang = round((( $SedangC45IdentifikasiSedang / ($SedangC45IdentifikasiTinggi
+ $SedangC45IdentifikasiSedang + $SedangC45IdentifikasiRendah)) * 100), 2);
$fmeasure_sedang =
round(((2*($precision_sedang*$recall_sedang)/($precision_sedang+$recall_sedang)) *1),2);

$precision_rendah = round((($RendahC45IdentifikasiRendah /
($TinggiC45IdentifikasiRendah + $SedangC45IdentifikasiRendah + $RendahC45IdentifikasiRendah))
* 100), 2);
$recall_rendah = round((($RendahC45IdentifikasiRendah / ($RendahC45IdentifikasiTinggi
+ $RendahC45IdentifikasiSedang + $RendahC45IdentifikasiRendah)) * 100), 2);
$fmeasure_rendah =
round(((2*($precision_rendah*$recall_rendah)/($precision_rendah+$recall_rendah)) *1),2);

$accuracy_all = round(((($TinggiC45IdentifikasiTinggi + $SedangC45IdentifikasiSedang +


$RendahC45IdentifikasiRendah) /
($TinggiC45IdentifikasiTinggi + $SedangC45IdentifikasiTinggi +
$RendahC45IdentifikasiTinggi +
$TinggiC45IdentifikasiSedang + $SedangC45IdentifikasiSedang +
$RendahC45IdentifikasiSedang +
$TinggiC45IdentifikasiRendah + $SedangC45IdentifikasiRendah +
$RendahC45IdentifikasiRendah)) * 100), 2);

echo "<p><b>Tabel Penilaian Pohon Keputusan C4.5</b></p>


<table>
<tr>
<td></td>
<td><b>Keputusan Asli: Tinggi = $Tinggi</b></td>
<td><b>Keputusan Asli: Sedang = $Sedang</b></td>
<td><b>Keputusan Asli: Rendah = $Rendah</b></td>
</tr>
<tr>
<td><b>Diidentifikasi Tinggi oleh C4.5</b></td>
<td>$TinggiC45IdentifikasiTinggi</td>
<td>$SedangC45IdentifikasiTinggi</td>
<td>$RendahC45IdentifikasiTinggi</td>
</tr>
<tr>
<td><b>Diidentifikasi Sedang oleh C4.5</b></td>
<td>$TinggiC45IdentifikasiSedang</td>
<td>$SedangC45IdentifikasiSedang</td>
<td>$RendahC45IdentifikasiSedang</td>
</tr>
<tr>
<td><b>Diidentifikasi Rendah oleh C4.5</b></td>
<td>$TinggiC45IdentifikasiRendah</td>
<td>$SedangC45IdentifikasiRendah</td>
<td>$RendahC45IdentifikasiRendah</td>
</tr>
</table>

<p><a>
<b>Kelas Tinggi : </b> <br>
- Precision = $TinggiC45IdentifikasiTinggi / ($TinggiC45IdentifikasiTinggi +
$SedangC45IdentifikasiTinggi + $RendahC45IdentifikasiTinggi) = $precision_tinggi %<br>
- Recall = $TinggiC45IdentifikasiTinggi / ($TinggiC45IdentifikasiTinggi +
$TinggiC45IdentifikasiSedang + $TinggiC45IdentifikasiRendah) = $recall_tinggi %<br>
- F-Measure =
2*(($precision_tinggi*$recall_tinggi)/($precision_tinggi+$recall_tinggi)) =$fmeasure_tinggi
%<br><br>
<b>Kelas Sedang : </b> <br>
- Precision = $SedangC45IdentifikasiSedang / ($TinggiC45IdentifikasiSedang +
$SedangC45IdentifikasiSedang + $RendahC45IdentifikasiSedang) = $precision_sedang %<br>
- Recall = $SedangC45IdentifikasiSedang / ($SedangC45IdentifikasiTinggi +
$SedangC45IdentifikasiSedang + $SedangC45IdentifikasiRendah) = $recall_sedang %<br>
- F-Measure =
2*(($precision_sedang*$recall_sedang)/($precision_sedang+$recall_sedang)) =$fmeasure_sedang
%<br><br>
<b>Kelas Rendah : </b> <br>
- Precision = $RendahC45IdentifikasiRendah / ($TinggiC45IdentifikasiRendah +
$SedangC45IdentifikasiRendah + $RendahC45IdentifikasiRendah) = $precision_rendah %<br>
- Recall = $RendahC45IdentifikasiRendah / ($RendahC45IdentifikasiTinggi +
$RendahC45IdentifikasiSedang + $RendahC45IdentifikasiRendah) = $recall_rendah %<br>
- F-Measure =
2*(($precision_rendah*$recall_rendah)/($precision_rendah+$recall_rendah)) =$fmeasure_rendah
%<br><br>
Akurasi = ($TinggiC45IdentifikasiTinggi + $SedangC45IdentifikasiSedang +
$RendahC45IdentifikasiRendah) /
($TinggiC45IdentifikasiTinggi + $SedangC45IdentifikasiTinggi +
$RendahC45IdentifikasiTinggi +
$TinggiC45IdentifikasiSedang + $SedangC45IdentifikasiSedang +
$RendahC45IdentifikasiSedang +
$TinggiC45IdentifikasiRendah + $SedangC45IdentifikasiRendah +
$RendahC45IdentifikasiRendah) = $accuracy_all %<br>
</a></p>
";

echo "<h2>Kinerja &#187; Tabel Penilaian</h2>";


// include "menu_kinerja.php";

$sqlEmpty = mysql_query("SELECT id FROM data_keputusan_kinerja");


$rowEmpty = mysql_fetch_array($sqlEmpty);

if (empty($rowEmpty)) {
echo "Tabel Penilaian Kosong !<br>Lakukan Perbandingan Dulu !";
} else {
echo "<br />";
perbandingan();
}
break;
case "lakukan_kinerja";
echo "<h2>Kinerja &#187; Proses Kinerja</h2>";
// include "menu_kinerja.php";
timer_start();
include "function/kinerjaC45.php";
$class = timer_stop(3);
echo "<p>Proses perhitungan kinerja selesai! waktu yang dibutuhkan $class detik</p>";
break;
}
?>

27. Klasifikasi_sekolah_c45/admin/modul/menu_c45.php
<?php
echo "<h3><b><center>
Menu: <a href=?module=c45>Perhitungan C4.5</a> |
<a href=?module=c45&act=mining>Lakukan Mining C4.5</a> |
<a href=?module=c45&act=pohon_keputusan>Pohon Keputusan C4.5</a>
</center></b></h3>";
28. Klasifikasi_sekolah_c45/admin/modul/menu_data_sekolah.php
<?php
echo "<h3><b><center>
Menu: <a href=?module=data_sekolah>Data Sekolah</a> |
<a href=?module=data_sekolah&act=partisi_data>Partisi Data</a>
</center></b></h3>";
29. Klasifikasi_sekolah_c45/admin/modul/menu_kinerja.php
<?php
echo "<h3><b><center>
Menu: <a href=?module=kinerja>Kinerja C4.5</a> |
<a href=?module=kinerja&act=lakukan_kinerja>Lakukan Proses Kinerja</a> |
<a href=?module=kinerja&act=tabel_penilaian>Tabel Penilaian</a>
</center></b></h3>";
30. Klasifikasi_sekolah_c45/admin/modul/partisi_data.php
<?php
echo "<h2>Data Training &#187; Partisi Data</h2>";
// include "menu_data_training.php";

function countData($atribut, $class)


{
$sql = mysql_query("SELECT count(id) as id FROM data_sekolah where $atribut AND class =
'$class'");
while($row = mysql_fetch_array($sql)) {
$count = "$row[id]";
}
return $count;
}
function countPersentase($banyak, $atribut)
{
$sqlTotal = mysql_query("SELECT count(id) as id FROM data_sekolah where $atribut");
$rowTotal = mysql_fetch_array($sqlTotal);
$persen = round((($banyak * $rowTotal['id']) / 100), 0);
return $persen;
}
$status_data_rendah = countData("status_data is not null", "Rendah");
$status_data_sedang = countData("status_data is not null", "Sedang");
$status_data_tinggi = countData("status_data is not null", "Tinggi");
$total_data = $status_data_rendah + $status_data_sedang + $status_data_tinggi;

$status_data_training_rendah = countData("status_data = 'Data Training'", "Rendah");


$status_data_training_sedang = countData("status_data = 'Data Training'", "Sedang");
$status_data_training_tinggi = countData("status_data = 'Data Training'", "Tinggi");
$data_training_total = $status_data_training_rendah + $status_data_training_sedang +
$status_data_training_tinggi;

$status_data_testing_rendah = countData("status_data = 'Data Testing'", "Rendah");


$status_data_testing_sedang = countData("status_data = 'Data Testing'", "Sedang");
$status_data_testing_tinggi = countData("status_data = 'Data Testing'", "Tinggi");
$data_testing_total = $status_data_testing_rendah + $status_data_testing_sedang +
$status_data_testing_tinggi;

echo "<form method=POST action=''>


<table>
<tr>
<td>Set Data Training (Semua Data)</td>
<td> : <input name='data' type='text' style='width:30px'> %</td>
<td colspan=2>
<input type=submit name=submit value=Proses>
</td>
</tr>

</table>
</form>";
if (isset($_POST['submit'])) {
if ($_POST['data'] > 100) {
echo "<p>Data yang dimasukkan harus lebih kecil dari 100!<p>";
} else {
$Rendah = countPersentase($_POST['data'], "class = 'Rendah'");
$Sedang = countPersentase($_POST['data'], "class = 'Sedang'");
$Tinggi = countPersentase($_POST['data'], "class = 'Tinggi'");

mysql_query("TRUNCATE data_keputusan");
mysql_query("TRUNCATE data_keputusan_kinerja");
mysql_query("TRUNCATE iterasi_id3");
mysql_query("TRUNCATE pohon_keputusan_id3");
mysql_query("TRUNCATE rule_id3");

mysql_query("UPDATE data_sekolah SET status_data = ''");


mysql_query("UPDATE data_sekolah SET status_data = 'Data Training' WHERE class =
'Rendah' LIMIT $Rendah");
mysql_query("UPDATE data_sekolah SET status_data = 'Data Training' WHERE class =
'Sedang' LIMIT $Sedang");
mysql_query("UPDATE data_sekolah SET status_data = 'Data Training' WHERE class =
'Tinggi' LIMIT $Tinggi");
mysql_query("UPDATE data_sekolah SET status_data = 'Data Testing' WHERE status_data =
''");

echo "<script>alert('Data Training berhasil diupdate!');


document.location.href='media.php?module=data_sekolah&act=partisi_data';</script>\n";
}
}
echo "<table>
<tr>
<th><b>Status Data ($total_data Data)</b></th>
<th>Data Training ($data_training_total Data)</th>
<th>Data Testing ($data_testing_total Data)</th>
</tr>

<tr>
<td><b>Rendah ($status_data_rendah Data)</b></td>
<td><b>$status_data_training_rendah</b></td>
<td><b>$status_data_testing_rendah</b></td>
</tr>

<tr>
<td><b>Tinggi ($status_data_tinggi Data)</b></td>
<td><b>$status_data_training_tinggi</b></td>
<td><b>$status_data_testing_tinggi</b></td>
</tr>

<tr>
<td><b>Sedang ($status_data_sedang Data)</b></td>
<td><b>$status_data_training_sedang</b></td>
<td><b>$status_data_testing_sedang</b></td>
</tr>
</table>";

31. Klasifikasi_sekolah_c45/admin/modul/penentu_keputusan.php
<?php
echo "<h2>Penentu Keputusan</h2>";
include "form_penentu_keputusan.php";
include "upload_csv_penentu_keputusan.php";
if ($_SESSION[leveluser]=='admin'){
echo "<p>Opsi: <a
href=./aksi.php?module=penentu_keputusan&act=delete_data_penentu_keputusan>Hapus Semua
Data</a> |
<a href='modul/export_penentu_keputusan.php' target='_blank'>Export Data</a>
</p>";

echo "<table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'>


<tr>
<th>No</th>
<th>npsn</th>
<th>nama sekolah</th>
<th>kecamatan</th>
<th>status sekolah</th>
<th>tw 1</th>
<th>tw 2</th>
<th>tw 3</th>
<th>tahun</th>
<th>Keputusan C4.5 <br />ID Rule</th>
<th>Opsi</th>
</tr>";
}

if ($_SESSION[leveluser]=='admin'){
$sql=mysql_query('SELECT * FROM data_keputusan ORDER BY id');
}
$warna1 = '#FFFFFF';
$warna2 = '#CCFFFF';
$warna = $warna1;
$no = 1;
while ($data=mysql_fetch_array($sql)){
if($warna == $warna1){
$warna = $warna2;
} else {
$warna = $warna1;
}
echo "<tr bgcolor='$warna'>
<td>$no</td>
<td>$data[npsn]</td>
<td>$data[nama_sekolah]</td>
<td>$data[kecamatan]</td>
<td>$data[status_sekolah]</td>
<td>$data[tw_1]</td>
<td>$data[tw_2]</td>
<td>$data[tw_3]</td>
<td>$data[tahun]</td>
<td>
";
if ($data['keputusan_c45'] == 'Rendah') {
echo "<font color=red><b>$data[keputusan_c45]</b></font>";
} elseif ($data['keputusan_c45'] == 'Sedang') {
echo "<font color=blue><b>$data[keputusan_c45]</b></font>";
} elseif ($data['keputusan_c45'] == 'Tinggi') {
echo "<font color=green><b>$data[keputusan_c45]</b></font>";
} else {
echo "<b>$data[keputusan_c45]</b>";
}
echo "<br><b>$data[id_rule_c45]</b></td>
<td>
<a href=./aksi.php?module=penentu_keputusan&act=hapus&id=$data[id]>Hapus</a>
</td>
</tr>";
$no++;
}

echo"</table>";
?>
</html>

32. Klasifikasi_sekolah_c45/admin/modul/pohon_keputusan_c45.php
<?php
include "../../config/koneksi.php";
echo "<h2>C45 &#187; Pohon Keputusan</h2>";
// include "menu_c45.php";
echo " <p>Opsi: <a href=./aksi.php?module=c45&act=hapus_pohon_keputusan>Hapus Semua
Data</a></p>";
echo "<font face='Courier New' size='2'>";
echo "<h3><b>Pohon Keputusan: <br></b></h3>";
function get_subfolder($idparent, $spasi){
if ($_SESSION[leveluser]=='admin'){
$result = mysql_query("select * from pohon_keputusan_c45 where id_parent=
'$idparent'");
}
while($row=mysql_fetch_row($result)){
for($i=1;$i<=$spasi;$i++){
echo "|&nbsp;&nbsp;";
}
if ($row[7] === 'Tinggi') {
$keputusan = "<font color=red>$row[7]</font>";
} elseif ($row[7] === 'Sedang') {
$keputusan = "<font color=blue>$row[7]</font>";
} elseif ($row[7] === 'Rendah') {
$keputusan = "<font color=green>$row[7]</font>";
} elseif ($row[7] === '?') {
$keputusan = "<font color=purple>$row[7]</font>";
} else {
$keputusan = "<b>$row[7]</b>";
}
echo "<font color=red>$row[1]</font> = $row[2] (Rendah = $row[4], Sedang = $row[5],
Tinggi = $row[6]) : <b>$keputusan</b><br>";

/*panggil dirinya sendiri*/


get_subfolder($row[0], $spasi + 1);
}
}

get_subfolder('0', 0);
echo "<hr>";

echo "<h3><b>Chart Pohon Keputusan <br></b></h3>";


include "tree_graph/index.php";
echo "<hr>";

echo "<h3><b>Rule: <br></b></h3>";


$no = 1;
if ($_SESSION[leveluser]=='admin'){
$sqlLihatRule = mysql_query("select * from rule_c45 order by id" );
}
while($rowLihatRule=mysql_fetch_array($sqlLihatRule)){
if ($rowLihatRule['keputusan'] === 'Tinggi') {
$keputusan = "<font color=red>$rowLihatRule[keputusan]</font>";
} elseif ($rowLihatRule['keputusan'] === 'Sedang') {
$keputusan = "<font color=blue>$rowLihatRule[keputusan]</font>";
} elseif ($rowLihatRule['keputusan'] === 'Rendah') {
$keputusan = "<font color=green>$rowLihatRule[keputusan]</font>";
} elseif ($rowLihatRule['keputusan'] === '?') {
$keputusan = "<font color=purple>$rowLihatRule[keputusan]</font>";
} else {
$keputusan = "<b>$rowLihatRule[keputusan]</b>";
}
echo "<b>$no.</b> if <b>(</b>$rowLihatRule[rule]<b>)</b> then <b>$keputusan</b> <font
color=blue>(id = $rowLihatRule[id])</font><br>";
$no++;
}
echo "</font>";

33. Klasifikasi_sekolah_c45/admin/modul/pola_kelompok.php
<?php
function getClass($nama_sekolah) {
$sql2=mysql_query("SELECT * FROM data_sekolah WHERE nama_sekolah = '$nama_sekolah'");
while ($data2=mysql_fetch_array($sql2)){
$class .= "$data2[class], ";
}
echo "$class";
}
echo "<h2>Pola Kelompok</h2>";

echo "
<form method=POST action=''>
<table>
<tr>
<td>Cari Pola Berdasarkan</td>
<td>:
<select name='sort_by' type='text'>
<option value='npsn'>NPSN</option>
<option value='nama_sekolah'>Nama Sekolah</option>
</select>
<input name='value_sort_by' type='text'>
</td>
</tr>

<tr>
<td colspan=2>
<input type='submit' name='submitx' value='Cari'>
</td>
</tr>
</table>
</form>";

if (isset($_POST['submitx'])) {
if ($_SESSION[leveluser]=='admin'){
echo "<p>Opsi: <a
href='modul/export_pola_kelompok.php?query1=$_POST[sort_by]&query2=$_POST[value_sort_by]'
target='_blank'>Export Data</a>
</p>";
echo "<table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'>
<tr>
<th>No</th>
<th>npsn</th>
<th>nama sekolah</th>
<th>status sekolah</th>
<th>tahun</th>
<th>kelompok</th>
</tr>";
}

if ($_SESSION[leveluser]=='admin'){
$sql=mysql_query("SELECT * FROM data_sekolah WHERE $_POST[sort_by] like
'%$_POST[value_sort_by]%'");
}
$warna1 = '#FFFFFF';
$warna2 = '#CCFFFF';
$warna = $warna1;
$no = 1;
while ($data=mysql_fetch_array($sql)){
if($warna == $warna1){
$warna = $warna2;
} else {
$warna = $warna1;
}
echo "<tr bgcolor='$warna'>
<td>$no</td>
<td>$data[npsn]</td>
<td>$data[nama_sekolah]</td>
<td>$data[status_sekolah]</td>
<td>$data[tahun]</td>
<td>$data[class]</td>
</tr>";
$no++;
}

echo"</table>";

echo "<table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'>


<tr>
<th>No</th>
<th>npsn</th>
<th>nama sekolah</th>
<th>status sekolah</th>
<th>kelompok</th>
</tr>";
$sql=mysql_query("SELECT distinct nama_sekolah, npsn, status_sekolah FROM data_sekolah
WHERE $_POST[sort_by] like '%$_POST[value_sort_by]%'");
$warna1 = '#FFFFFF';
$warna2 = '#CCFFFF';
$warna = $warna1;
$no = 1;
while ($data=mysql_fetch_array($sql)){
if($warna == $warna1){
$warna = $warna2;
} else {
$warna = $warna1;
}
echo "<tr bgcolor='$warna'>
<td>$no</td>
<td>$data[npsn]</td>
<td>$data[nama_sekolah]</td>
<td>$data[status_sekolah]</td>
<td>";
getClass($data['nama_sekolah']);
echo "</td>
</tr>";
$no++;
}

echo"</table>";

}
?>
</html>
34. Klasifikasi_sekolah_c45/admin/modul/upload_csv.php
<?php
include "../../config/koneksi.php";
echo "<form action='' method='post' enctype='multipart/form-data' name='form1' id='form1'>
<p>Ambil File .csv :
<input name='csv' type='file' id='csv' />
<input type='submit' name='Submit' value='Submit' /></p >
</form>";
if ($_FILES[csv][size] > 0) {

//get the csv file


$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");

//loop through the csv file and insert into database

do {
if ($data[0]) {
mysql_query("INSERT INTO data_sekolah VALUES
(
'',
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'".addslashes($data[5])."',
'".addslashes($data[6])."',
'".addslashes($data[7])."',
'".addslashes($data[8])."',
'Data Training'
)
");
}
} while ($data = fgetcsv($handle,1000,",","'"));
//
// include "modul/transformasi_data.php";
//redirect
// echo "<script>alert('Data berhasil diinput!');
document.location.href='media.php?module=data_sekolah';</script>\n";

}
35. Klasifikasi_sekolah_c45/admin/modul/upload_csv_penentu_keputusan.php
<?php
include "../../config/koneksi.php";
echo "<form action='' method='post' enctype='multipart/form-data' name='form1' id='form1'>
<p>Ambil File .csv :
<input name='csv' type='file' id='csv' />
<input type='submit' name='Submit' value='Submit' /></p >
</form>";
if ($_FILES[csv][size] > 0) {

//get the csv file


$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");

//loop through the csv file and insert into database


// mysql_query("TRUNCATE data_sekolah");
do {
if ($data[0]) {
mysql_query("INSERT INTO data_keputusan VALUES
(
'',
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'".addslashes($data[5])."',
'".addslashes($data[6])."',
'".addslashes($data[7])."',
'',
''
)
");
}
} while ($data = fgetcsv($handle,1000,",","'"));
//
include "modul/function/penentuKeputusanImport.php";
//redirect
echo "<script>alert('Data berhasil diinput!');
document.location.href='media.php?module=penentu_keputusan';</script>\n";

}
36. Klasifikasi_sekolah_c45/admin/modul/function/generateGrafikTahun.php
<?php
function generateGrafikTahun($class, $tahun) {
$sql=mysql_query("SELECT distinct kecamatan FROM data_sekolah order by kecamatan");
while ($data=mysql_fetch_array($sql)){
$sql2=mysql_query("SELECT count(*) as banyak, tahun FROM data_sekolah where class =
'$class' AND tahun = '$tahun' AND kecamatan = '$data[kecamatan]'");
// echo "SELECT count(*) as banyak, tahun FROM data_sekolah where class = '$class' AND
tahun = '$tahun'<br>";
$data2=mysql_fetch_array($sql2);
if ($class == 'Rendah') {
mysql_query("insert into grafik_tahun values ('', '$tahun', '$data[kecamatan]',
'$data2[banyak]', '', '')");
// echo "insert into grafik_tahun values ('', '$tahun', '$data[kecamatan]',
'$data2[banyak]', '', '')<br>";
} else {
mysql_query("update grafik_tahun set `$class` = '$data2[banyak]' where kecamatan =
'$data[kecamatan]' AND tahun = '$tahun' AND kecamatan = '$data[kecamatan]'");
// echo "update grafik_tahun set `$class` = '$data2[banyak]' where kecamatan =
'$data[kecamatan]' AND tahun = '$tahun' AND kecamatan = '$data[kecamatan]'<br>";
}
}
}

mysql_query("TRUNCATE grafik_tahun");
generateGrafikTahun('Rendah', '2012');
generateGrafikTahun('Sedang', '2012');
generateGrafikTahun('Tinggi', '2012');
generateGrafikTahun('Rendah', '2013');
generateGrafikTahun('Sedang', '2013');
generateGrafikTahun('Tinggi', '2013');
generateGrafikTahun('Rendah', '2014');
generateGrafikTahun('Sedang', '2014');
generateGrafikTahun('Tinggi', '2014');
generateGrafikTahun('Rendah', '2015');
generateGrafikTahun('Sedang', '2015');
generateGrafikTahun('Tinggi', '2015');
generateGrafikTahun('Rendah', '2016');
generateGrafikTahun('Sedang', '2016');
generateGrafikTahun('Tinggi', '2016');

37. Klasifikasi_sekolah_c45/admin/modul/function/kinerjaC45.php
<?php
include "../../../config/koneksi.php";
mysql_query("TRUNCATE data_keputusan_kinerja");

$arrayPerbandingan = array(); // buat array baru


// ambil data survey
$sqlDataTesting = mysql_query("SELECT * FROM data_sekolah where status_data = 'Data
Testing'");
while($rowDataTesting = mysql_fetch_array($sqlDataTesting)) {
if (!empty($rowDataTesting)) {
// masukkan tiap nilai atribut data survey pada array
$array['npsn'] = $rowDataTesting['npsn'];
$array['nama_sekolah'] = $rowDataTesting['nama_sekolah'];
$array['kecamatan'] = $rowDataTesting['kecamatan'];
$array['status_sekolah'] = $rowDataTesting['status_sekolah'];
$array['tw_1'] = $rowDataTesting['tw_1'];
$array['tw_2'] = $rowDataTesting['tw_2'];
$array['tw_3'] = $rowDataTesting['tw_3'];
$array['tahun'] = $rowDataTesting['tahun'];
$array['class'] = $rowDataTesting['class'];
$arrayPerbandingan[] = $array;
}
}
foreach ($arrayPerbandingan as $atribut) {
// ambil atribut dan panggil fungsi penentuKeputusan()
penentuKeputusan($atribut);
}

function penentuKeputusan($atribut) {
mysql_query("TRUNCATE data_penentu_keputusan");
// buat variabel baru dan masukkan masing-masing atribut
$npsn = $atribut['npsn'];
$nama_sekolah = $atribut['nama_sekolah'];
$kecamatan = $atribut['kecamatan'];
$status_sekolah = $atribut['status_sekolah'];
$tw_1 = $atribut['tw_1'];
$tw_2 = $atribut['tw_2'];
$tw_3 = $atribut['tw_3'];
$tahun = $atribut['tahun'];
$class = $atribut['class'];

// masukkan variabel pada array


$array2 = array("status_sekolah" => "$status_sekolah",
"tw_1" => "$tw_1",
"tw_2" => "$tw_2",
"tw_3" => "$tw_3"
);

// ambil atribut yang ada di pohon


$sqlSelectDistinctAtribut = mysql_query("SELECT distinct atribut FROM
pohon_keputusan_c45");
while($rowSelectDistinctAtribut = mysql_fetch_array($sqlSelectDistinctAtribut)) {
if (!empty($rowSelectDistinctAtribut)) {
foreach ($array2 as $atribut_array => $nilai_atribut_array) {
// jika atribut pada pohon sama dgn atribut yg ada di array (atribut yg di
post-kan) maka insert atribut dan nilai atribut pada db
if ($rowSelectDistinctAtribut['atribut'] == $atribut_array) {
mysql_query("INSERT INTO data_penentu_keputusan VALUES('',
'$atribut_array', '$nilai_atribut_array')");
}
}
}
}

$arrayPenentuKeputusan = array(); // buat array baru


// ambil atribut dan nilai atribut pada db data penentu keputusan
$sqlDataPenentuKeputusan = mysql_query("SELECT * FROM data_penentu_keputusan");
while($rowDataPenentuKeputusan = mysql_fetch_array($sqlDataPenentuKeputusan)) {
$sqlRulePenentuKeputusan = mysql_query("SELECT * FROM rule_penentu_keputusan where
pohon = 'C45'");
while($rowRulePenentuKeputusan = mysql_fetch_array($sqlRulePenentuKeputusan)) {
if (!empty($rowRulePenentuKeputusan)) {
// jika atribut pada db data_penentu_keputusan sama dengan atribut pada db
rule_penentu_keputusan
if ($rowRulePenentuKeputusan['atribut'] ==
$rowDataPenentuKeputusan['atribut']) {
// jika nilai atribut pada db data_penentu_keputusan sama dengan nilai
atribut pada db rule_penentu_keputusan
if ($rowRulePenentuKeputusan['nilai_atribut'] ==
$rowDataPenentuKeputusan['nilai_atribut']) {
// set nilai id, cocok dan masukkan pada array
$arrayPenentuKeputusanTemp['id'] = $rowRulePenentuKeputusan['id'];
$arrayPenentuKeputusanTemp['cocok'] = "Ya";
$arrayPenentuKeputusan[] = $arrayPenentuKeputusanTemp;
} elseif ($rowRulePenentuKeputusan['nilai_atribut'] !==
$rowDataPenentuKeputusan['nilai_atribut']) {
// set nilai id, cocok dan masukkan pada array
$arrayPenentuKeputusanTemp['id'] = $rowRulePenentuKeputusan['id'];
$arrayPenentuKeputusanTemp['cocok'] = "Tidak";
$arrayPenentuKeputusan[] = $arrayPenentuKeputusanTemp;
}
}
}
}
}

foreach ($arrayPenentuKeputusan as $arrayPenentuKeputusanUpdate) {


// update nilai cocok dari array sebelumnya
mysql_query("UPDATE rule_penentu_keputusan SET cocok =
'$arrayPenentuKeputusanUpdate[cocok]' where id = $arrayPenentuKeputusanUpdate[id]");
}

// queri utk mengambil keputusan dan id rule berdasarkan nilai atribut yg cocok (nilai
atribut rule == nilai atribut yg dipost-kan)
$sqlKeputusan = mysql_query("SELECT distinct id_rule, keputusan FROM
`rule_penentu_keputusan` WHERE pohon = 'C45' AND cocok = 'Ya' and id_rule not in (select
distinct id_rule from `rule_penentu_keputusan` where pohon = 'C45' AND cocok = 'Tidak')");
$rowKeputusan = mysql_fetch_array($sqlKeputusan);
if (!empty($rowKeputusan)) {
$keputusan = "$rowKeputusan[keputusan]";
$idRule = "$rowKeputusan[id_rule]";

// insert data_keputusan pada db


mysql_query("INSERT INTO data_keputusan_kinerja VALUES('',
'$npsn',
'$nama_sekolah',
'$kecamatan',
'$status_sekolah',
'$tw_1',
'$tw_2',
'$tw_3',
'$tahun',
'$class',
'$keputusan',
'$idRule')
");
}
}

38. Klasifikasi_sekolah_c45/admin/modul/function/miningC45.php
<?php
include "../../../config/koneksi.php";
populateDb();
mysql_query("DELETE FROM atribut WHERE atribut = 'kecamatan'");
miningC45(null, null);
updateKeputusanUnknown();
generateRuleFinalPrePruning();
insertRuleC45PrePruning();
populateAtribut();
insertAtribut("kecamatan");
echo "<br><font face='Courier New' size='2'>";
get_subfolder('0', 0);
echo "</font><br>";

function lihatPerhitungan() {
// $sqlInfGainMaxIterasi = mysql_query("SELECT distinct atribut, gain_ratio FROM
mining_c45 WHERE gain_ratio in (SELECT max(gain_ratio) FROM `mining_c45`) LIMIT 1");
$sqlInfGainMaxIterasi = mysql_query("SELECT distinct atribut, gain_ratio FROM mining_c45
WHERE gain_ratio in (SELECT max(gain_ratio) FROM `mining_c45`) AND atribut != 'Total' LIMIT
1");
$rowInfGainMaxIterasi = mysql_fetch_array($sqlInfGainMaxIterasi);
// hanya ambil atribut dimana jumlah kasus totalnya Tidak kosong
if (!empty($rowInfGainMaxIterasi['atribut'])) {
echo "<br><font face='Courier New' size='2'>";
get_subfolder('0', 0);
echo "</font><br>";
echo " <table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'>
<tr>
<th>No</th>
<th>Atribut</th>
<th>Nilai Atribut</th>
<th>Jumlah Kasus Total</th>
<th>Jumlah Kasus Rendah</th>
<th>Jumlah Kasus Sedang</th>
<th>Jumlah Kasus Tinggi</th>
<th>Entropy</th>
<th>Information Gain</th>
<th>Split Info</th>
<th>Gain Ratio</th>
</tr>";
$no = 1;
$sql=mysql_query("SELECT * FROM mining_c45 ORDER BY id");
$warna1 = '#FFFFFF';
$warna2 = '#66CCFF';
$warna = $warna1;

while ($data=mysql_fetch_array($sql)){
if($warna == $warna1){
$warna = $warna2;
} else {
$warna = $warna1;
}
echo " <tr bgcolor='$warna'>
<td>$no</td>
<td>$data[atribut]</td>
<td>$data[nilai_atribut]</td>
<td>$data[jml_kasus_total]</td>
<td>$data[jml_kasus_rendah]</td>
<td>$data[jml_kasus_sedang]</td>
<td>$data[jml_kasus_tinggi]</td>
<td>$data[entropy]</td>
<td>$data[inf_gain]</td>
<td>$data[split_info]</td>
<td>$data[gain_ratio]</td>
</tr>";
mysql_query("INSERT INTO iterasi_c45 VALUES ('', $no,
'$rowInfGainMaxIterasi[atribut]', '$data[atribut]',
'$data[nilai_atribut]', '$data[jml_kasus_total]', '$data[jml_kasus_rendah]',
'$data[jml_kasus_sedang]', '$data[jml_kasus_tinggi]', '$data[entropy]',
'$data[inf_gain]', '$data[split_info]', '$data[gain_ratio]')");
$no++;
}
echo"</table>";
echo "<br><p>Atribut <b>$rowInfGainMaxIterasi[atribut]</b> memiliki nilai gain
terbesar</p>";
}
}

//---------- KUMPULAN FUNGSI YANG AKAN DILAKUKAN DALAM PROSES MINING ----------
function miningC45($atribut, $nilai_atribut)
{
perhitunganC45($atribut, $nilai_atribut);
lihatPerhitungan();
insertAtributPohonKeputusan($atribut, $nilai_atribut);
getInfGainMax($atribut, $nilai_atribut);
}

function selectDataFromDb($select, $tabel, $where) {


$sqlData = mysql_query("SELECT $select as data FROM $tabel WHERE $where");
$rowData = mysql_fetch_array($sqlData);
return $rowData['data'];
}

function insertAtribut($atribut) {
$sqlAtribut = mysql_query("SELECT distinct `$atribut` FROM data_sekolah ORDER by
`$atribut`");
while ($rowAtribut = mysql_fetch_array($sqlAtribut)) {
mysql_query("insert into `atribut` values
('', '$atribut', '$rowAtribut[$atribut]')");
}
}

function hapusAtributParent($id) {
$sqlAtribut = mysql_query("SELECT id_parent, atribut, nilai_atribut FROM
pohon_keputusan_c45 WHERE id = '$id'");
$rowAtribut = mysql_fetch_array($sqlAtribut);
mysql_query("DELETE FROM atribut WHERE atribut = '$rowAtribut[atribut]'");

if ($rowAtribut['id_parent'] == 0) {
echo "";
} else {
hapusAtributParent($rowAtribut['id_parent']);
}
}

//#1# Hapus semua DB dan insert default atribut dan nilai atribut

function populateAtribut()
{
mysql_query("TRUNCATE atribut");
mysql_query("insert into `atribut` values
(1, 'Total', 'Total'),
(2, 'status_sekolah', 'Negeri'),
(3, 'status_sekolah', 'Swasta'),
(6, 'tw_1', 'KECIL'),
(7, 'tw_1', 'SEDANG'),
(8, 'tw_1', 'BESAR'),
(9, 'tw_2', 'TURUN'),
(10, 'tw_2', 'TETAP'),
(11, 'tw_2', 'NAIK'),
(12, 'tw_3', 'TURUN'),
(13, 'tw_3', 'TETAP'),
(14, 'tw_3', 'NAIK')
");

function populateDb()
{
//#1# Hapus semua DB dan insert default atribut dan nilai atribut
mysql_query("TRUNCATE rule_penentu_keputusan");
mysql_query("TRUNCATE pohon_keputusan_c45");
mysql_query("TRUNCATE rule_c45");
mysql_query("TRUNCATE mining_c45");
mysql_query("TRUNCATE iterasi_c45");
}

// ================ FUNGSI PERHITUNGAN C45 =================


function perhitunganC45($atribut, $nilai_atribut)
{
if (empty($atribut) AND empty($nilai_atribut)) {
//#2# Jika atribut yg diinputkan kosong, maka lakukan perhitungan awal
$kondisiAtribut = ""; // set kondisi atribut kosong
} else if (!empty($atribut) AND !empty($nilai_atribut)) {
// jika atribut tdk kosong, maka select kondisi atribut dari DB
$sqlKondisiAtribut = mysql_query("SELECT kondisi_atribut FROM pohon_keputusan_c45
WHERE atribut = '$atribut' AND nilai_atribut = '$nilai_atribut' order by id DESC LIMIT 1");
$rowKondisiAtribut = mysql_fetch_array($sqlKondisiAtribut);
$kondisiAtribut = str_replace("~", "'", $rowKondisiAtribut['kondisi_atribut']); //
replace string ~ menjadi '
}

//#3# Jika atribut = total, maka hitung jumlah kasus total, jumlah kasus Ya dan jumlah
kasus Tidak
$sqlJumlahKasusTotal = mysql_query("SELECT COUNT(*) as jumlah_total FROM
data_sekolah WHERE class is not null AND status_data = 'Data Training' $kondisiAtribut");
$rowJumlahKasusTotal = mysql_fetch_array($sqlJumlahKasusTotal);
$getJumlahKasusTotal = $rowJumlahKasusTotal['jumlah_total'];

// hitung jumlah kasus Rendah


$sqlJumlahKasusRendah = mysql_query("SELECT COUNT(*) as jumlah_rendah FROM
data_sekolah WHERE class = 'Rendah' AND class is not null AND status_data = 'Data Training'
$kondisiAtribut");
$rowJumlahKasusRendah = mysql_fetch_array($sqlJumlahKasusRendah);
$getJumlahKasusRendah = $rowJumlahKasusRendah['jumlah_rendah'];

// hitung jumlah kasus Sedang


$sqlJumlahKasusSedang = mysql_query("SELECT COUNT(*) as jumlah_sedang FROM
data_sekolah WHERE class = 'Sedang' AND class is not null AND status_data = 'Data Training'
$kondisiAtribut");
$rowJumlahKasusSedang = mysql_fetch_array($sqlJumlahKasusSedang);
$getJumlahKasusSedang = $rowJumlahKasusSedang['jumlah_sedang'];

// hitung jumlah kasus Tinggi


$sqlJumlahKasusTinggi = mysql_query("SELECT COUNT(*) as jumlah_tinggi FROM
data_sekolah WHERE class = 'Tinggi' AND class is not null AND status_data = 'Data Training'
$kondisiAtribut");
$rowJumlahKasusTinggi = mysql_fetch_array($sqlJumlahKasusTinggi);
$getJumlahKasusTinggi = $rowJumlahKasusTinggi['jumlah_tinggi'];

//#4# Insert jumlah kasus ke DB


// insert ke database mining_c45
mysql_query("INSERT INTO mining_c45 VALUES ('', 'Total', 'Total',
'$getJumlahKasusTotal', '$getJumlahKasusRendah', '$getJumlahKasusSedang',
'$getJumlahKasusTinggi', '', '', '', '', '', '')");

//#4.1# hitung entropy untuk jumlah kasus total


// perhitungan entropy
$sqlEntropy = mysql_query("SELECT id, jml_kasus_total, jml_kasus_rendah,
jml_kasus_sedang, jml_kasus_tinggi FROM mining_c45");
while($rowEntropy = mysql_fetch_array($sqlEntropy)) {
$getJumlahKasusTotalEntropy = $rowEntropy['jml_kasus_total'];
$getJumlahKasusRendahEntropy = $rowEntropy['jml_kasus_rendah'];
$getJumlahKasusSedangEntropy = $rowEntropy['jml_kasus_sedang'];
$getJumlahKasusTinggiEntropy = $rowEntropy['jml_kasus_tinggi'];
$idEntropy = $rowEntropy['id'];

// jika jml kasus != sama, maka hitung rumus entropy:


$perbandingan_rendah = $getJumlahKasusRendahEntropy /
$getJumlahKasusTotalEntropy;
$perbandingan_sedang = $getJumlahKasusSedangEntropy /
$getJumlahKasusTotalEntropy;
$perbandingan_tinggi = $getJumlahKasusTinggiEntropy /
$getJumlahKasusTotalEntropy;

if ($getJumlahKasusRendahEntropy == 0) {
$perbandingan_rendahx = 0;
} else {
$perbandingan_rendahx = (-($perbandingan_rendah) *
log($perbandingan_rendah,2));
}
if ($getJumlahKasusSedangEntropy == 0) {
$perbandingan_sedangx = 0;
} else {
$perbandingan_sedangx = (-($perbandingan_sedang) *
log($perbandingan_sedang,2));
}
if ($getJumlahKasusTinggiEntropy == 0) {
$perbandingan_tinggix = 0;
} else {
$perbandingan_tinggix = (-($perbandingan_tinggi) *
log($perbandingan_tinggi,2));
}

$rumusEntropy = ( $perbandingan_rendahx + $perbandingan_sedangx +


$perbandingan_tinggix) / (3/2);
$getEntropy = round($rumusEntropy,4);

//#8# Update nilai entropy


// update nilai entropy
mysql_query("UPDATE mining_c45 SET entropy = $getEntropy WHERE id =
$idEntropy");
}

// insert jumlah kasus pada atribut selain total


$sqlAtribut = mysql_query("SELECT distinct atribut FROM atribut WHERE atribut !=
'Total'");
while($rowGetAtribut = mysql_fetch_array($sqlAtribut)) {
$getAtribut = $rowGetAtribut['atribut'];
//#5# Jika atribut != total (atribut lainnya), maka hitung jumlah kasus total, jumlah kasus Ya
dan jumlah kasus Tidak masing2 atribut
// ambil nilai atribut
$sqlNilaiAtribut = mysql_query("SELECT nilai_atribut FROM atribut WHERE atribut =
'$getAtribut' ORDER BY id");
while($rowNilaiAtribut = mysql_fetch_array($sqlNilaiAtribut)) {
$getNilaiAtribut = $rowNilaiAtribut['nilai_atribut'];

// set kondisi dimana nilai_atribut = berdasakan masing2 atribut dan status


data = Data Training
$kondisi = "$getAtribut = '$getNilaiAtribut' AND status_data = 'Data Training'
$kondisiAtribut";

// hitung jumlah kasus per atribut


$sqlJumlahKasusTotalAtribut = mysql_query("SELECT COUNT(*) as jumlah_total
FROM data_sekolah WHERE $kondisi");
$rowJumlahKasusTotalAtribut = mysql_fetch_array($sqlJumlahKasusTotalAtribut);
$getJumlahKasusTotalAtribut = $rowJumlahKasusTotalAtribut['jumlah_total'];

// hitung jumlah kasus Rendah


$sqlJumlahKasusRendahAtribut = mysql_query("SELECT COUNT(*) as jumlah_rendah
FROM data_sekolah WHERE $kondisi AND class = 'Rendah'");
$rowJumlahKasusRendahAtribut =
mysql_fetch_array($sqlJumlahKasusRendahAtribut);
$getJumlahKasusRendahAtribut = $rowJumlahKasusRendahAtribut['jumlah_rendah'];

// hitung jumlah kasus Sedang


$sqlJumlahKasusSedangAtribut = mysql_query("SELECT COUNT(*) as jumlah_sedang
FROM data_sekolah WHERE $kondisi AND class = 'Sedang'");
$rowJumlahKasusSedangAtribut =
mysql_fetch_array($sqlJumlahKasusSedangAtribut);
$getJumlahKasusSedangAtribut = $rowJumlahKasusSedangAtribut['jumlah_sedang'];

// hitung jumlah kasus Tinggi


$sqlJumlahKasusTinggiAtribut = mysql_query("SELECT COUNT(*) as jumlah_tinggi
FROM data_sekolah WHERE $kondisi AND class = 'Tinggi'");
$rowJumlahKasusTinggiAtribut =
mysql_fetch_array($sqlJumlahKasusTinggiAtribut);
$getJumlahKasusTinggiAtribut = $rowJumlahKasusTinggiAtribut['jumlah_tinggi'];

//#6# Insert jumlah kasus total ke DB


// insert ke database mining_c45
mysql_query("INSERT INTO mining_c45 VALUES ('', '$getAtribut',
'$getNilaiAtribut', '$getJumlahKasusTotalAtribut', '$getJumlahKasusRendahAtribut',
'$getJumlahKasusSedangAtribut',
'$getJumlahKasusTinggiAtribut', '', '', '', '', '', '')");

}
}
hitungEntropy();
}

function hitungEntropy()
{
//#7# Lakukan perhitungan entropy
// perhitungan entropy
$sqlEntropy = mysql_query("SELECT id, jml_kasus_total, jml_kasus_rendah, jml_kasus_sedang,
jml_kasus_tinggi FROM mining_c45");
while($rowEntropy = mysql_fetch_array($sqlEntropy)) {
$getJumlahKasusTotalEntropy = $rowEntropy['jml_kasus_total'];
$getJumlahKasusRendahEntropy = $rowEntropy['jml_kasus_rendah'];
$getJumlahKasusSedangEntropy = $rowEntropy['jml_kasus_sedang'];
$getJumlahKasusTinggiEntropy = $rowEntropy['jml_kasus_tinggi'];
$idEntropy = $rowEntropy['id'];

// jika jml kasus sama, maka entropy = 1


$perbandingan_rendah = $getJumlahKasusRendahEntropy / $getJumlahKasusTotalEntropy;
$perbandingan_sedang = $getJumlahKasusSedangEntropy / $getJumlahKasusTotalEntropy;
$perbandingan_tinggi = $getJumlahKasusTinggiEntropy / $getJumlahKasusTotalEntropy;

if ($getJumlahKasusRendahEntropy == 0) {
$perbandingan_rendahx = 0;
} else {
$perbandingan_rendahx = (-($perbandingan_rendah) *
log($perbandingan_rendah,2));
}
if ($getJumlahKasusSedangEntropy == 0) {
$perbandingan_sedangx = 0;
} else {
$perbandingan_sedangx = (-($perbandingan_sedang) *
log($perbandingan_sedang,2));
}
if ($getJumlahKasusTinggiEntropy == 0) {
$perbandingan_tinggix = 0;
} else {
$perbandingan_tinggix = (-($perbandingan_tinggi) *
log($perbandingan_tinggi,2));
}

$rumusEntropy = ( $perbandingan_rendahx + $perbandingan_sedangx +


$perbandingan_tinggix) / (3/2);
$getEntropy = round($rumusEntropy,4);

//#8# Update nilai entropy


// update nilai entropy
mysql_query("UPDATE mining_c45 SET entropy = $getEntropy WHERE id = $idEntropy");
}

//#9# Lakukan perhitungan information gain


// perhitungan information gain
// ambil nilai entropy dari total (jumlah kasus total)
$sqlEntropy2 = mysql_query("SELECT * FROM mining_c45 WHERE atribut != 'Total'");
while($rowEntropy2 = mysql_fetch_array($sqlEntropy2)) {
$sqlJumlahKasusTotalInfGain = mysql_query("SELECT jml_kasus_total, entropy FROM
mining_c45 WHERE atribut = 'Total'");
$rowJumlahKasusTotalInfGain = mysql_fetch_array($sqlJumlahKasusTotalInfGain);
$getJumlahKasusTotalInfGain = $rowJumlahKasusTotalInfGain['jml_kasus_total'];
$idEntropy2 = $rowEntropy2['id'];
$getEntropy2 = $rowEntropy2['entropy'];
// rumus information gain
if ($getEntropy2 == 0) {
$getInfGain = 0;
} else {
$getInfGain = (-(($rowEntropy2['jml_kasus_total'] / $getJumlahKasusTotalInfGain) *
($getEntropy2)));
}

//#10# Update information gain tiap nilai atribut (temporary)


// update inf_gain_temp (utk mencari nilai masing2 atribut)
mysql_query("UPDATE mining_c45 SET inf_gain_temp = $getInfGain WHERE id =
$idEntropy2");
}

$sqlAtribut = mysql_query("SELECT distinct atribut FROM atribut WHERE atribut !=


'Total'");
while($rowGetAtribut = mysql_fetch_array($sqlAtribut)) {
$getAtribut = $rowGetAtribut['atribut'];
$sqlJumlahKasusTotalSplitInfo = mysql_query("SELECT jml_kasus_total, entropy FROM
mining_c45 WHERE atribut = 'Total'");
$rowJumlahKasusTotalSplitInfo = mysql_fetch_array($sqlJumlahKasusTotalSplitInfo);
$getEntropy3 = $rowJumlahKasusTotalSplitInfo['entropy'];

// jumlahkan masing2 inf_gain_temp atribut


$sqlAtributInfGain = mysql_query("SELECT SUM(inf_gain_temp) as inf_gain FROM
mining_c45 WHERE atribut = '$getAtribut'");
while ($rowAtributInfGain = mysql_fetch_array($sqlAtributInfGain)) {
$getAtributInfGain = $rowAtributInfGain['inf_gain'];

$getInfGainFix = round(($getEntropy3 + $getAtributInfGain),4);

//#11# Looping perhitungan information gain, sehingga mendapatkan information gain tiap
atribut. Update information gain
// update inf_gain (fix)
mysql_query("UPDATE mining_c45 SET inf_gain = $getInfGainFix WHERE atribut =
'$getAtribut'");
}
}

//#12# Lakukan perhitungan split info


$sqlAtribut2 = mysql_query("SELECT * FROM mining_c45 WHERE atribut != 'Total'");
while($rowGetAtribut2 = mysql_fetch_array($sqlAtribut2)) {
$sqlJumlahKasusTotalSplitInfo = mysql_query("SELECT jml_kasus_total, entropy FROM
mining_c45 WHERE atribut = 'Total'");
$rowJumlahKasusTotalSplitInfo = mysql_fetch_array($sqlJumlahKasusTotalSplitInfo);
// rumus split info
$getSplitInfo = (($rowGetAtribut2['jml_kasus_total'] /
$rowJumlahKasusTotalSplitInfo['jml_kasus_total']) *
(log(($rowGetAtribut2['jml_kasus_total'] /
$rowJumlahKasusTotalSplitInfo['jml_kasus_total']),2)));

//#13# Update split info tiap nilai atribut (temporary)


// update split_info_temp (utk mencari nilai masing2 atribut)
mysql_query("UPDATE mining_c45 SET split_info_temp = $getSplitInfo WHERE id =
$rowGetAtribut2[id]");
}

$sqlAtribut3 = mysql_query("SELECT distinct atribut FROM atribut WHERE atribut !=


'Total'");
while($rowGetAtribut3 = mysql_fetch_array($sqlAtribut3)) {
// jumlahkan masing2 split_info_temp dari tiap atribut
$sqlAtributSplitInfo = mysql_query("SELECT SUM(split_info_temp) as split_info FROM
mining_c45 WHERE atribut = '$rowGetAtribut3[atribut]'");
while ($rowAtributSplitInfo = mysql_fetch_array($sqlAtributSplitInfo)){
$getAtributSplitInfo = $rowAtributSplitInfo['split_info'];

// split info fix (4 angka di belakang koma)


$getSplitInfoFix = -(round($getAtributSplitInfo,4));

//#14# Looping perhitungan split info, sehingga mendapatkan information gain tiap atribut.
Update information gain
// update split info (fix)
mysql_query("UPDATE mining_c45 SET split_info = $getSplitInfoFix WHERE atribut =
'$rowGetAtribut3[atribut]'");
}
}

//#15# Lakukan perhitungan gain ratio


$sqlGainRatio = mysql_query("SELECT id, inf_gain, split_info FROM mining_c45");
while($rowGainRatio = mysql_fetch_array($sqlGainRatio)) {
$idGainRatio = $rowGainRatio['id'];
// jika nilai inf gain == 0 dan split info == 0, maka gain ratio = 0
if ($rowGainRatio['inf_gain'] == 0 AND $rowGainRatio['split_info'] == 0){
$getGainRatio = 0;
} else {
// rumus gain ratio
$getGainRatio = round(($rowGainRatio['inf_gain'] /
$rowGainRatio['split_info']),4);
}

//#16# Update gain ratio dari setiap atribut


mysql_query("UPDATE mining_c45 SET gain_ratio = $getGainRatio WHERE id =
'$idGainRatio'");
}
}

//#17# Insert atribut dgn information gain max ke DB pohon keputusan


function insertAtributPohonKeputusan($atribut, $nilai_atribut)
{
// ambil nilai inf gain tertinggi dimana hanya 1 atribut saja yg dipilih
// $sqlInfGainMaxTemp2 = mysql_query("SELECT distinct atribut, split_info, gain_ratio FROM
mining_c45 WHERE gain_ratio in (SELECT max(gain_ratio) FROM `mining_c45`) AND atribut !=
'Total' LIMIT 1");
$sqlInfGainMaxTemp2 = mysql_query("SELECT distinct atribut, split_info, gain_ratio FROM
mining_c45 WHERE gain_ratio in (SELECT max(gain_ratio) FROM `mining_c45`) AND atribut !=
'Total' LIMIT 1");
$rowInfGainMaxTempFix = mysql_fetch_array($sqlInfGainMaxTemp2);
// hanya ambil atribut dimana jumlah kasus totalnya tidak kosong
// if ($rowInfGainMaxTempFix['gain_ratio'] > 0 OR $rowInfGainMaxTempFix['split_info'] > 0)
{
if ($rowInfGainMaxTempFix['gain_ratio'] > 0) {
// ambil nilai atribut yang memiliki nilai inf gain max
$sqlInfGainMax = mysql_query("SELECT * FROM mining_c45 WHERE atribut =
'$rowInfGainMaxTempFix[atribut]'");
while($rowInfGainMax = mysql_fetch_array($sqlInfGainMax)) {
if ($rowInfGainMax['jml_kasus_rendah'] == 0 AND $rowInfGainMax['jml_kasus_sedang']
== 0 AND $rowInfGainMax['jml_kasus_tinggi'] == 0) {
$keputusan = 'Null';
} else if ($rowInfGainMax['jml_kasus_rendah'] !== 0 AND
$rowInfGainMax['jml_kasus_sedang'] == 0 AND $rowInfGainMax['jml_kasus_tinggi'] == 0) {
$keputusan = 'Rendah';
} else if ($rowInfGainMax['jml_kasus_rendah'] == 0 AND
$rowInfGainMax['jml_kasus_sedang'] !== 0 AND $rowInfGainMax['jml_kasus_tinggi'] == 0) {
$keputusan = 'Sedang';
} else if ($rowInfGainMax['jml_kasus_rendah'] == 0 AND
$rowInfGainMax['jml_kasus_sedang'] == 0 AND $rowInfGainMax['jml_kasus_tinggi'] !== 0) {
$keputusan = 'Tinggi';
} else {
$keputusan = '?';
}

if (empty($atribut) AND empty($nilai_atribut)) {


//#18# Jika atribut yang diinput kosong (atribut awal) maka insert ke pohon keputusan
id_parent = 0
// set kondisi atribut = AND atribut = nilai atribut
$kondisiAtribut = "AND $rowInfGainMax[atribut] =
~$rowInfGainMax[nilai_atribut]~";
// insert ke tabel pohon keputusan
mysql_query("INSERT INTO pohon_keputusan_c45 VALUES ('',
'$rowInfGainMax[atribut]', '$rowInfGainMax[nilai_atribut]', 0,
'$rowInfGainMax[jml_kasus_rendah]', '$rowInfGainMax[jml_kasus_sedang]',
'$rowInfGainMax[jml_kasus_tinggi]', '$keputusan', 'Belum', '$kondisiAtribut', 'Belum')");
}

//#19# Jika atribut yang diinput tidak kosong maka insert ke pohon keputusan dimana id_parent
diambil dari tabel pohon keputusan sebelumnya (where atribut = atribut yang diinput)
else if (!empty($atribut) AND !empty($nilai_atribut)) {
$sqlIdParent = mysql_query("SELECT id, atribut, nilai_atribut,
jml_kasus_rendah, jml_kasus_sedang, jml_kasus_tinggi FROM pohon_keputusan_c45 WHERE atribut =
'$atribut' AND nilai_atribut = '$nilai_atribut' order by id DESC LIMIT 1");
$rowIdParent = mysql_fetch_array($sqlIdParent);

mysql_query("INSERT INTO pohon_keputusan_c45 VALUES ('',


'$rowInfGainMax[atribut]', '$rowInfGainMax[nilai_atribut]', $rowIdParent[id],
'$rowInfGainMax[jml_kasus_rendah]', '$rowInfGainMax[jml_kasus_sedang]',
'$rowInfGainMax[jml_kasus_tinggi]', '$keputusan', 'Belum', '', 'Belum')");

}
}
}
loopingKondisiAtribut();
}

//#20# Lakukan looping kondisi atribut untuk diproses pada fungsi perhitunganC45()
function loopingKondisiAtribut()
{
// ambil semua id dan kondisi atribut
$sqlLoopingKondisi = mysql_query("SELECT id, kondisi_atribut FROM pohon_keputusan_c45");
while($rowLoopingKondisi = mysql_fetch_array($sqlLoopingKondisi)) {
// select semua data dimana id_parent = id awal
$sqlUpdateKondisi = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE id_parent =
$rowLoopingKondisi[id] AND looping_kondisi = 'Belum'");
while($rowUpdateKondisi = mysql_fetch_array($sqlUpdateKondisi)) {
// set kondisi: kondisi sebelumnya yg diselect berdasarkan id_parent ditambah 'AND
atribut = nilai atribut'
$kondisiAtribut = "$rowLoopingKondisi[kondisi_atribut] AND
$rowUpdateKondisi[atribut] = ~$rowUpdateKondisi[nilai_atribut]~";
// update kondisi atribut
mysql_query("UPDATE pohon_keputusan_c45 SET kondisi_atribut = '$kondisiAtribut',
looping_kondisi = 'Sudah' WHERE id = $rowUpdateKondisi[id]");
}
}
}

//#22# Ambil information gain max untuk diproses pada fungsi loopingMiningC45()
function getInfGainMax($atribut, $nilai_atribut)
{
// select inf gain max
$sqlInfGainMaxAtribut = mysql_query("SELECT distinct atribut FROM mining_c45 WHERE
gain_ratio in (SELECT max(gain_ratio) FROM `mining_c45`) AND atribut != 'Total' LIMIT 1");
// $sqlInfGainMaxAtribut = mysql_query("SELECT distinct atribut FROM mining_c45 WHERE
gain_ratio in (SELECT max(gain_ratio) FROM `mining_c45`) LIMIT 1");
while($rowInfGainMaxAtribut = mysql_fetch_array($sqlInfGainMaxAtribut)) {
// if () {
// }
$inf_gain_max_atribut = "$rowInfGainMaxAtribut[atribut]";
if (empty($atribut) AND empty($nilai_atribut)) {
// jika atribut kosong, proses atribut dgn inf gain max pada fungsi
loopingMiningC45()
loopingMiningC45($inf_gain_max_atribut);
} else if (!empty($atribut) AND !empty($nilai_atribut)) {
// proses atribut dgn inf gain max pada fungsi loopingMiningC45()
loopingMiningC45($inf_gain_max_atribut);
}
}
}

//#23# Looping proses mining dimana atribut dgn information gain max yang akan diproses pada
fungsi miningC45()
function loopingMiningC45($inf_gain_max_atribut)
{
$sqlBelumAdaKeputusanLagi = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE keputusan
= '?' and diproses = 'Belum' AND atribut = '$inf_gain_max_atribut'");
while($rowBelumAdaKeputusanLagi = mysql_fetch_array($sqlBelumAdaKeputusanLagi)) {
populateAtribut();
$atribut = "$rowBelumAdaKeputusanLagi[atribut]";
$nilai_atribut = "$rowBelumAdaKeputusanLagi[nilai_atribut]";
mysql_query("TRUNCATE mining_c45");
hapusAtributParent($rowBelumAdaKeputusanLagi['id']);
miningC45($atribut, $nilai_atribut);
mysql_query("UPDATE pohon_keputusan_c45 SET diproses = 'Sudah' WHERE id =
'$rowBelumAdaKeputusanLagi[id]'");
}
}

// update keputusan jika ada keputusan yg Null dan ?


function updateKeputusanUnknown()
{
$sqlReplaceUnknownIdParent = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE
keputusan = '?' and id not in (select id_parent from pohon_keputusan_c45)");
while($rowReplaceUnknownIdParent = mysql_fetch_array($sqlReplaceUnknownIdParent)){
if ($rowReplaceUnknownIdParent['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent['jml_kasus_tinggi']) {
$keputusanUnknown = 'Rendah';
} else if ($rowReplaceUnknownIdParent['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent['jml_kasus_rendah'] AND
$rowReplaceUnknownIdParent['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent['jml_kasus_tinggi']) {
$keputusanUnknown = 'Sedang';
} else if ($rowReplaceUnknownIdParent['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent['jml_kasus_rendah']) {
$keputusanUnknown = 'Tinggi';
} else if ($rowReplaceUnknownIdParent['jml_kasus_rendah'] ==
$rowReplaceUnknownIdParent['jml_kasus_sedang'] OR
$rowReplaceUnknownIdParent['jml_kasus_rendah'] ==
$rowReplaceUnknownIdParent['jml_kasus_tinggi'] OR
$rowReplaceUnknownIdParent['jml_kasus_sedang'] ==
$rowReplaceUnknownIdParent['jml_kasus_tinggi']) {
$sqlReplaceUnknownIdParent2 = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE
id = $rowReplaceUnknownIdParent[id_parent]");
$rowReplaceUnknownIdParent2 = mysql_fetch_array($sqlReplaceUnknownIdParent2);
if ($rowReplaceUnknownIdParent2['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent2['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent2['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent2['jml_kasus_tinggi']) {
$keputusanUnknown = 'Rendah';
} else if ($rowReplaceUnknownIdParent2['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent2['jml_kasus_rendah'] AND
$rowReplaceUnknownIdParent2['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent2['jml_kasus_tinggi']) {
$keputusanUnknown = 'Sedang';
} else if ($rowReplaceUnknownIdParent2['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent2['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent2['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent2['jml_kasus_rendah']) {
$keputusanUnknown = 'Tinggi';
} else if ($rowReplaceUnknownIdParent2['jml_kasus_rendah'] ==
$rowReplaceUnknownIdParent2['jml_kasus_sedang'] OR
$rowReplaceUnknownIdParent2['jml_kasus_rendah'] ==
$rowReplaceUnknownIdParent2['jml_kasus_tinggi'] OR
$rowReplaceUnknownIdParent2['jml_kasus_sedang'] ==
$rowReplaceUnknownIdParent2['jml_kasus_tinggi']) {
$sqlReplaceUnknownIdParent2 = mysql_query("SELECT * FROM pohon_keputusan_c45
WHERE id = $rowReplaceUnknownIdParent2[id_parent]");
$rowReplaceUnknownIdParent3 = mysql_fetch_array($sqlReplaceUnknownIdParent2);
if ($rowReplaceUnknownIdParent3['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent3['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent3['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent3['jml_kasus_tinggi']) {
$keputusanUnknown = 'Rendah';
} else if ($rowReplaceUnknownIdParent3['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent3['jml_kasus_rendah'] AND
$rowReplaceUnknownIdParent3['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent3['jml_kasus_tinggi']) {
$keputusanUnknown = 'Sedang';
} else if ($rowReplaceUnknownIdParent3['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent3['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent3['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent3['jml_kasus_rendah']) {
$keputusanUnknown = 'Tinggi';
}
}
}
mysql_query("UPDATE pohon_keputusan_c45 SET keputusan = '$keputusanUnknown' WHERE id =
$rowReplaceUnknownIdParent[id]");
}

$sqlReplaceNull = mysql_query("SELECT id, id_parent FROM pohon_keputusan_c45 WHERE


keputusan = 'Null'");
while($rowReplaceNull = mysql_fetch_array($sqlReplaceNull)) {
$sqlReplaceNullIdParent = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE id =
$rowReplaceNull[id_parent]");
$rowReplaceNullIdParent = mysql_fetch_array($sqlReplaceNullIdParent);
if ($rowReplaceNullIdParent['jml_kasus_rendah'] >
$rowReplaceNullIdParent['jml_kasus_sedang'] AND $rowReplaceNullIdParent['jml_kasus_rendah'] >
$rowReplaceNullIdParent['jml_kasus_tinggi']) {
$keputusanNull = 'Rendah';
} else if ($rowReplaceNullIdParent['jml_kasus_sedang'] >
$rowReplaceNullIdParent['jml_kasus_rendah'] AND $rowReplaceNullIdParent['jml_kasus_sedang'] >
$rowReplaceNullIdParent['jml_kasus_tinggi']) {
$keputusanNull = 'Sedang';
} else if ($rowReplaceNullIdParent['jml_kasus_tinggi'] >
$rowReplaceNullIdParent['jml_kasus_sedang'] AND $rowReplaceNullIdParent['jml_kasus_tinggi'] >
$rowReplaceNullIdParent['jml_kasus_rendah']) {
$keputusanNull = 'Tinggi';
}
mysql_query("UPDATE pohon_keputusan_c45 SET keputusan = '$keputusanNull' WHERE id =
$rowReplaceNull[id]");
}

$sqlReplaceNull2 = mysql_query("SELECT id, id_parent FROM pohon_keputusan_c45 WHERE


keputusan = ''");
while($rowReplaceNull2 = mysql_fetch_array($sqlReplaceNull2)) {
$sqlReplaceNull2IdParent = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE id =
$rowReplaceNull2[id_parent]");
$rowReplaceNull2IdParent = mysql_fetch_array($sqlReplaceNull2IdParent);
if ($rowReplaceNull2IdParent['jml_kasus_rendah'] >
$rowReplaceNull2IdParent['jml_kasus_sedang'] AND $rowReplaceNull2IdParent['jml_kasus_rendah']
> $rowReplaceNull2IdParent['jml_kasus_tinggi']) {
$keputusanNull2 = 'Rendah';
} else if ($rowReplaceNull2IdParent['jml_kasus_sedang'] >
$rowReplaceNull2IdParent['jml_kasus_rendah'] AND $rowReplaceNull2IdParent['jml_kasus_sedang']
> $rowReplaceNull2IdParent['jml_kasus_tinggi']) {
$keputusanNull2 = 'Sedang';
} else if ($rowReplaceNull2IdParent['jml_kasus_tinggi'] >
$rowReplaceNull2IdParent['jml_kasus_sedang'] AND $rowReplaceNull2IdParent['jml_kasus_tinggi']
> $rowReplaceNull2IdParent['jml_kasus_rendah']) {
$keputusanNull2 = 'Tinggi';
}
mysql_query("UPDATE pohon_keputusan_c45 SET keputusan = '$keputusanNull2' WHERE id =
$rowReplaceNull2[id]");
}
}

function generateRuleAwal($idparent, $spasi)


{
// ambil data pohon keputusan
$sqlGetIdParent = mysql_query("select * from pohon_keputusan_c45 where
id_parent='$idparent'");
while($rowGetIdParent = mysql_fetch_array($sqlGetIdParent)){
if (!empty($rowGetIdParent)) {
// ambil data pohon keputusan dimana id = idparent
$sqlGetId = mysql_query("select * from pohon_keputusan_c45 where
id='$rowGetIdParent[id_parent]'");
$rowGetId = mysql_fetch_array($sqlGetId);
// jika atribut dan nilai atribut masih kosong
if (empty($rowGetId['atribut']) AND empty($rowGetId['nilai_atribut'])){
// insert pada db rule_c45
mysql_query("insert into rule_c45 values ('', '$rowGetIdParent[id_parent]',
'$rowGetIdParent[atribut] == $rowGetIdParent[nilai_atribut]', '$rowGetIdParent[keputusan]')");
} else {
// insert pada db rule_c45
mysql_query("insert into rule_c45 values ('', '$rowGetIdParent[id_parent]',
'$rowGetId[atribut] == $rowGetId[nilai_atribut] AND $rowGetIdParent[atribut] ==
$rowGetIdParent[nilai_atribut]', '$rowGetIdParent[keputusan]')");
}
// looping dirinya sendiri
generateRuleAwal($rowGetIdParent['id'], $spasi + 1);
}
}
}

function generateRuleLooping()
{
// ambil data rule
$sqlGetDataRule = mysql_query("select * from rule_c45 order by id");
while($rowGetDataRule=mysql_fetch_array($sqlGetDataRule)){
if (!empty($rowGetDataRule)) {
// ambil idparent rule dimana id = idparent
$sqlGetIdParentUpdateRule = mysql_query("select id_parent from pohon_keputusan_c45
where id = '$rowGetDataRule[id_parent]'");
$rowGetIdParentUpdateRule=mysql_fetch_array($sqlGetIdParentUpdateRule);

$sqlGetIdUpdateRule = mysql_query("select * from pohon_keputusan_c45 where id =


'$rowGetIdParentUpdateRule[id_parent]'");
while($rowGetIdUpdateRule=mysql_fetch_array($sqlGetIdUpdateRule)){
// bentuk rule
$rule = "$rowGetIdUpdateRule[atribut] == $rowGetIdUpdateRule[nilai_atribut]
AND $rowGetDataRule[rule]";
// update rule
mysql_query("update rule_c45 set rule = '$rule', id_parent =
'$rowGetIdParentUpdateRule[id_parent]' where id = '$rowGetDataRule[id]'");
}

// ambil data pohon dimana idparent = 0 (root)


$sqlGetDataPohonKeputusan = mysql_query("select * from pohon_keputusan_c45 where
id_parent = 0");
while($rowGetDataPohonKeputusan=mysql_fetch_array($sqlGetDataPohonKeputusan)){
// jika idparent rule == id pohon
if ($rowGetDataRule['id_parent'] == $rowGetDataPohonKeputusan['id']){
// update rule set id = id rule
mysql_query("update rule_c45 set id_parent = 0 where id =
'$rowGetDataRule[id]'");
}
}
}
}
}

function generateRuleFinalPrePruning()
{
// panggil fungsi generateRuleAwal()
generateRuleAwal("0", 0);
// ambil data rule
$sqlUpdateRule = mysql_query("select * from rule_c45 order by id" );
while($rowUpdateRule=mysql_fetch_array($sqlUpdateRule)){
if (!empty($rowUpdateRule)) {
// jika idparent rule == 0
if ($rowUpdateRule['id_parent'] !== 0){
// lakukan fungsi generateRuleLooping()
generateRuleLooping();
// delete rule dimana keputusan == ?
mysql_query("delete from rule_c45 where keputusan = '?'");
}
}
}
}

function insertRuleC45PrePruning()
{
// ambil data pada db rule_c45
$sqlRuleC45 = mysql_query("SELECT id, rule, keputusan FROM rule_c45");
while($rowRuleC45 = mysql_fetch_array($sqlRuleC45)) {
$RuleC45 = "$rowRuleC45[rule]";
// explode string ' AND ' utk mendapatkan atribut
$explodeRuleC45 = explode(" AND ", $RuleC45);
foreach ($explodeRuleC45 as $dataExplodeRuleC45) {
// explode string ' == ' utk mendapatkan nilai atribut
$dataFixRuleC45 = explode(" == ", $dataExplodeRuleC45);
// insert into db
mysql_query("INSERT INTO rule_penentu_keputusan VALUES('', $rowRuleC45[id],
'$dataFixRuleC45[0]', '$dataFixRuleC45[1]', '$rowRuleC45[keputusan]', '', 'C45')");
}
}
}

function get_subfolder($idparent, $spasi){


if ($_SESSION[leveluser]=='admin'){
$result = mysql_query("select * from pohon_keputusan_c45 where id_parent=
'$idparent'");
}
while($row=mysql_fetch_row($result)){
for($i=1;$i<=$spasi;$i++){
echo "|&nbsp;&nbsp;";
}
if ($row[7] === 'Tinggi') {
$keputusan = "<font color=red>$row[7]</font>";
} elseif ($row[7] === 'Sedang') {
$keputusan = "<font color=blue>$row[7]</font>";
} elseif ($row[7] === 'Rendah') {
$keputusan = "<font color=green>$row[7]</font>";
} elseif ($row[7] === '?') {
$keputusan = "<font color=purple>$row[7]</font>";
} else {
$keputusan = "<b>$row[7]</b>";
}
echo "<font color=red>$row[1]</font> = $row[2] (Rendah = $row[4], Sedang = $row[5],
Tinggi = $row[6]) : <b>$keputusan</b><br>";

/*panggil dirinya sendiri*/


get_subfolder($row[0], $spasi + 1);
}
}

39. Klasifikasi_sekolah_c45/admin/modul/function/miningPrePruningC45.php
<?php
include "../../../config/koneksi.php";
populateDb();
mysql_query("DELETE FROM atribut WHERE atribut = 'kecamatan'");
miningC45(null, null);
updateKeputusanUnknown();
generateRuleFinalPrePruning();
insertRuleC45PrePruning();
populateAtribut();
insertAtribut("kecamatan");
echo "<br><font face='Courier New' size='2'>";
get_subfolder('0', 0);
echo "</font><br>";

function lihatPerhitungan() {
$sqlInfGainMaxIterasi = mysql_query("SELECT distinct atribut, gain_ratio FROM mining_c45
WHERE gain_ratio in (SELECT max(gain_ratio) FROM `mining_c45`) AND atribut != 'Total' LIMIT
1");
$rowInfGainMaxIterasi = mysql_fetch_array($sqlInfGainMaxIterasi);
// hanya ambil atribut dimana jumlah kasus totalnya Tidak kosong
if (!empty($rowInfGainMaxIterasi['atribut'])) {
echo "<br><font face='Courier New' size='2'>";
get_subfolder('0', 0);
echo "</font><br>";
echo " <table bgcolor='#00CCFF' border='1' cellspacing='0' cellspading='0'>
<tr>
<th>No</th>
<th>Atribut</th>
<th>Nilai Atribut</th>
<th>Jumlah Kasus Total</th>
<th>Jumlah Kasus Rendah</th>
<th>Jumlah Kasus Sedang</th>
<th>Jumlah Kasus Tinggi</th>
<th>Entropy</th>
<th>Information Gain</th>
<th>Split Info</th>
<th>Gain Ratio</th>
</tr>";
$no = 1;
$sql=mysql_query("SELECT * FROM mining_c45 ORDER BY id");
$warna1 = '#FFFFFF';
$warna2 = '#CCFFFF';
$warna = $warna1;

while ($data=mysql_fetch_array($sql)){
if($warna == $warna1){
$warna = $warna2;
} else {
$warna = $warna1;
}
echo " <tr bgcolor='$warna'>
<td>$no</td>
<td>$data[atribut]</td>
<td>$data[nilai_atribut]</td>
<td>$data[jml_kasus_total]</td>
<td>$data[jml_kasus_rendah]</td>
<td>$data[jml_kasus_sedang]</td>
<td>$data[jml_kasus_tinggi]</td>
<td>$data[entropy]</td>
<td>$data[inf_gain]</td>
<td>$data[split_info]</td>
<td>$data[gain_ratio]</td>
</tr>";
mysql_query("INSERT INTO iterasi_c45 VALUES ('', $no,
'$rowInfGainMaxIterasi[atribut]', '$data[atribut]',
'$data[nilai_atribut]', '$data[jml_kasus_total]', '$data[jml_kasus_rendah]',
'$data[jml_kasus_sedang]', '$data[jml_kasus_tinggi]', '$data[entropy]',
'$data[inf_gain]', '$data[split_info]', '$data[gain_ratio]')");
$no++;
}
echo"</table>";
echo "<br><p>Atribut <b>$rowInfGainMaxIterasi[atribut]</b> memiliki nilai gain
terbesar</p>";
}
}

//---------- KUMPULAN FUNGSI YANG AKAN DILAKUKAN DALAM PROSES MINING ----------
function miningC45($atribut, $nilai_atribut)
{
perhitunganC45($atribut, $nilai_atribut);
lihatPerhitungan();
insertAtributPohonKeputusan($atribut, $nilai_atribut);
getInfGainMax($atribut, $nilai_atribut);
}

function selectDataFromDb($select, $tabel, $where) {


$sqlData = mysql_query("SELECT $select as data FROM $tabel WHERE $where");
$rowData = mysql_fetch_array($sqlData);
return $rowData['data'];
}

function insertAtribut($atribut) {
$sqlAtribut = mysql_query("SELECT distinct `$atribut` FROM data_sekolah ORDER by
`$atribut`");
while ($rowAtribut = mysql_fetch_array($sqlAtribut)) {
mysql_query("insert into `atribut` values
('', '$atribut', '$rowAtribut[$atribut]')");
}
}

function hapusAtributParent($id) {
$sqlAtribut = mysql_query("SELECT id_parent, atribut, nilai_atribut FROM
pohon_keputusan_c45 WHERE id = '$id'");
$rowAtribut = mysql_fetch_array($sqlAtribut);
mysql_query("DELETE FROM atribut WHERE atribut = '$rowAtribut[atribut]'");
if ($rowAtribut['id_parent'] == 0) {
echo "";
} else {
hapusAtributParent($rowAtribut['id_parent']);
}
}

//#1# Hapus semua DB dan insert default atribut dan nilai atribut

function populateAtribut()
{
mysql_query("TRUNCATE atribut");
mysql_query("insert into `atribut` values
(1, 'Total', 'Total'),
(2, 'status_sekolah', 'Negeri'),
(3, 'status_sekolah', 'Swasta'),
(6, 'tw_1', 'KECIL'),
(7, 'tw_1', 'SEDANG'),
(8, 'tw_1', 'BESAR'),
(9, 'tw_2', 'TURUN'),
(10, 'tw_2', 'TETAP'),
(11, 'tw_2', 'NAIK'),
(12, 'tw_3', 'TURUN'),
(13, 'tw_3', 'TETAP'),
(14, 'tw_3', 'NAIK')
");

function populateDb()
{
//#1# Hapus semua DB dan insert default atribut dan nilai atribut
mysql_query("TRUNCATE rule_penentu_keputusan");
mysql_query("TRUNCATE pohon_keputusan_c45");
mysql_query("TRUNCATE rule_c45");
mysql_query("TRUNCATE mining_c45");
mysql_query("TRUNCATE iterasi_c45");
}

// ================ FUNGSI PERHITUNGAN C45 =================


function perhitunganC45($atribut, $nilai_atribut)
{
if (empty($atribut) AND empty($nilai_atribut)) {
//#2# Jika atribut yg diinputkan kosong, maka lakukan perhitungan awal
$kondisiAtribut = ""; // set kondisi atribut kosong
} else if (!empty($atribut) AND !empty($nilai_atribut)) {
// jika atribut tdk kosong, maka select kondisi atribut dari DB
$sqlKondisiAtribut = mysql_query("SELECT kondisi_atribut FROM pohon_keputusan_c45
WHERE atribut = '$atribut' AND nilai_atribut = '$nilai_atribut' order by id DESC LIMIT 1");
$rowKondisiAtribut = mysql_fetch_array($sqlKondisiAtribut);
$kondisiAtribut = str_replace("~", "'", $rowKondisiAtribut['kondisi_atribut']); //
replace string ~ menjadi '
}

//#3# Jika atribut = total, maka hitung jumlah kasus total, jumlah kasus Ya dan jumlah
kasus Tidak
$sqlJumlahKasusTotal = mysql_query("SELECT COUNT(*) as jumlah_total FROM
data_sekolah WHERE class is not null AND status_data = 'Data Training' $kondisiAtribut");
$rowJumlahKasusTotal = mysql_fetch_array($sqlJumlahKasusTotal);
$getJumlahKasusTotal = $rowJumlahKasusTotal['jumlah_total'];

// hitung jumlah kasus Rendah


$sqlJumlahKasusRendah = mysql_query("SELECT COUNT(*) as jumlah_rendah FROM
data_sekolah WHERE class = 'Rendah' AND class is not null AND status_data = 'Data Training'
$kondisiAtribut");
$rowJumlahKasusRendah = mysql_fetch_array($sqlJumlahKasusRendah);
$getJumlahKasusRendah = $rowJumlahKasusRendah['jumlah_rendah'];

// hitung jumlah kasus Sedang


$sqlJumlahKasusSedang = mysql_query("SELECT COUNT(*) as jumlah_sedang FROM
data_sekolah WHERE class = 'Sedang' AND class is not null AND status_data = 'Data Training'
$kondisiAtribut");
$rowJumlahKasusSedang = mysql_fetch_array($sqlJumlahKasusSedang);
$getJumlahKasusSedang = $rowJumlahKasusSedang['jumlah_sedang'];

// hitung jumlah kasus Tinggi


$sqlJumlahKasusTinggi = mysql_query("SELECT COUNT(*) as jumlah_tinggi FROM
data_sekolah WHERE class = 'Tinggi' AND class is not null AND status_data = 'Data Training'
$kondisiAtribut");
$rowJumlahKasusTinggi = mysql_fetch_array($sqlJumlahKasusTinggi);
$getJumlahKasusTinggi = $rowJumlahKasusTinggi['jumlah_tinggi'];

//#4# Insert jumlah kasus ke DB


// insert ke database mining_c45
mysql_query("INSERT INTO mining_c45 VALUES ('', 'Total', 'Total',
'$getJumlahKasusTotal', '$getJumlahKasusRendah', '$getJumlahKasusSedang',
'$getJumlahKasusTinggi', '', '', '', '', '', '')");

//#4.1# hitung entropy untuk jumlah kasus total


// perhitungan entropy
$sqlEntropy = mysql_query("SELECT id, jml_kasus_total, jml_kasus_rendah,
jml_kasus_sedang, jml_kasus_tinggi FROM mining_c45");
while($rowEntropy = mysql_fetch_array($sqlEntropy)) {
$getJumlahKasusTotalEntropy = $rowEntropy['jml_kasus_total'];
$getJumlahKasusRendahEntropy = $rowEntropy['jml_kasus_rendah'];
$getJumlahKasusSedangEntropy = $rowEntropy['jml_kasus_sedang'];
$getJumlahKasusTinggiEntropy = $rowEntropy['jml_kasus_tinggi'];
$idEntropy = $rowEntropy['id'];

// jika jml kasus != sama, maka hitung rumus entropy:


$perbandingan_rendah = $getJumlahKasusRendahEntropy /
$getJumlahKasusTotalEntropy;
$perbandingan_sedang = $getJumlahKasusSedangEntropy /
$getJumlahKasusTotalEntropy;
$perbandingan_tinggi = $getJumlahKasusTinggiEntropy /
$getJumlahKasusTotalEntropy;

if ($getJumlahKasusRendahEntropy == 0) {
$perbandingan_rendahx = 0;
} else {
$perbandingan_rendahx = (-($perbandingan_rendah) *
log($perbandingan_rendah,2));
}
if ($getJumlahKasusSedangEntropy == 0) {
$perbandingan_sedangx = 0;
} else {
$perbandingan_sedangx = (-($perbandingan_sedang) *
log($perbandingan_sedang,2));
}
if ($getJumlahKasusTinggiEntropy == 0) {
$perbandingan_tinggix = 0;
} else {
$perbandingan_tinggix = (-($perbandingan_tinggi) *
log($perbandingan_tinggi,2));
}

$rumusEntropy = ( $perbandingan_rendahx + $perbandingan_sedangx +


$perbandingan_tinggix) / (3/2);
// echo "$getJumlahKasusRendahEntropy | $getJumlahKasusSedangEntropy |
$getJumlahKasusTinggiEntropy - $rumusEntropy = ( $perbandingan_rendahx + $perbandingan_sedangx
+ $perbandingan_tinggix) / (3/2)<br>";
$getEntropy = round($rumusEntropy,4);

//#8# Update nilai entropy


// update nilai entropy
mysql_query("UPDATE mining_c45 SET entropy = $getEntropy WHERE id =
$idEntropy");
}

// insert jumlah kasus pada atribut selain total


$sqlAtribut = mysql_query("SELECT distinct atribut FROM atribut WHERE atribut !=
'Total'");
while($rowGetAtribut = mysql_fetch_array($sqlAtribut)) {
$getAtribut = $rowGetAtribut['atribut'];
//#5# Jika atribut != total (atribut lainnya), maka hitung jumlah kasus total, jumlah kasus Ya
dan jumlah kasus Tidak masing2 atribut
// ambil nilai atribut
$sqlNilaiAtribut = mysql_query("SELECT nilai_atribut FROM atribut WHERE atribut =
'$getAtribut' ORDER BY id");
while($rowNilaiAtribut = mysql_fetch_array($sqlNilaiAtribut)) {
$getNilaiAtribut = $rowNilaiAtribut['nilai_atribut'];

// set kondisi dimana nilai_atribut = berdasakan masing2 atribut dan status


data = Data Training
$kondisi = "$getAtribut = '$getNilaiAtribut' AND status_data = 'Data Training'
$kondisiAtribut";

// hitung jumlah kasus per atribut


$sqlJumlahKasusTotalAtribut = mysql_query("SELECT COUNT(*) as jumlah_total
FROM data_sekolah WHERE $kondisi");
$rowJumlahKasusTotalAtribut = mysql_fetch_array($sqlJumlahKasusTotalAtribut);
$getJumlahKasusTotalAtribut = $rowJumlahKasusTotalAtribut['jumlah_total'];

// hitung jumlah kasus Rendah


$sqlJumlahKasusRendahAtribut = mysql_query("SELECT COUNT(*) as jumlah_rendah
FROM data_sekolah WHERE $kondisi AND class = 'Rendah'");
$rowJumlahKasusRendahAtribut =
mysql_fetch_array($sqlJumlahKasusRendahAtribut);
$getJumlahKasusRendahAtribut = $rowJumlahKasusRendahAtribut['jumlah_rendah'];

// hitung jumlah kasus Sedang


$sqlJumlahKasusSedangAtribut = mysql_query("SELECT COUNT(*) as jumlah_sedang
FROM data_sekolah WHERE $kondisi AND class = 'Sedang'");
$rowJumlahKasusSedangAtribut =
mysql_fetch_array($sqlJumlahKasusSedangAtribut);
$getJumlahKasusSedangAtribut = $rowJumlahKasusSedangAtribut['jumlah_sedang'];

// hitung jumlah kasus Tinggi


$sqlJumlahKasusTinggiAtribut = mysql_query("SELECT COUNT(*) as jumlah_tinggi
FROM data_sekolah WHERE $kondisi AND class = 'Tinggi'");
$rowJumlahKasusTinggiAtribut =
mysql_fetch_array($sqlJumlahKasusTinggiAtribut);
$getJumlahKasusTinggiAtribut = $rowJumlahKasusTinggiAtribut['jumlah_tinggi'];

//#6# Insert jumlah kasus total ke DB


// insert ke database mining_c45
mysql_query("INSERT INTO mining_c45 VALUES ('', '$getAtribut',
'$getNilaiAtribut', '$getJumlahKasusTotalAtribut', '$getJumlahKasusRendahAtribut',
'$getJumlahKasusSedangAtribut',
'$getJumlahKasusTinggiAtribut', '', '', '', '', '', '')");

}
}
hitungEntropy();
}

function hitungEntropy()
{
//#7# Lakukan perhitungan entropy
// perhitungan entropy
$sqlEntropy = mysql_query("SELECT id, jml_kasus_total, jml_kasus_rendah, jml_kasus_sedang,
jml_kasus_tinggi FROM mining_c45");
while($rowEntropy = mysql_fetch_array($sqlEntropy)) {
$getJumlahKasusTotalEntropy = $rowEntropy['jml_kasus_total'];
$getJumlahKasusRendahEntropy = $rowEntropy['jml_kasus_rendah'];
$getJumlahKasusSedangEntropy = $rowEntropy['jml_kasus_sedang'];
$getJumlahKasusTinggiEntropy = $rowEntropy['jml_kasus_tinggi'];
$idEntropy = $rowEntropy['id'];

// jika jml kasus sama, maka entropy = 1


$perbandingan_rendah = $getJumlahKasusRendahEntropy / $getJumlahKasusTotalEntropy;
$perbandingan_sedang = $getJumlahKasusSedangEntropy / $getJumlahKasusTotalEntropy;
$perbandingan_tinggi = $getJumlahKasusTinggiEntropy / $getJumlahKasusTotalEntropy;

if ($getJumlahKasusRendahEntropy == 0) {
$perbandingan_rendahx = 0;
} else {
$perbandingan_rendahx = (-($perbandingan_rendah) *
log($perbandingan_rendah,2));
}
if ($getJumlahKasusSedangEntropy == 0) {
$perbandingan_sedangx = 0;
} else {
$perbandingan_sedangx = (-($perbandingan_sedang) *
log($perbandingan_sedang,2));
}
if ($getJumlahKasusTinggiEntropy == 0) {
$perbandingan_tinggix = 0;
} else {
$perbandingan_tinggix = (-($perbandingan_tinggi) *
log($perbandingan_tinggi,2));
}

$rumusEntropy = ( $perbandingan_rendahx + $perbandingan_sedangx +


$perbandingan_tinggix) / (3/2);
$getEntropy = round($rumusEntropy,4);

//#8# Update nilai entropy


// update nilai entropy
mysql_query("UPDATE mining_c45 SET entropy = $getEntropy WHERE id = $idEntropy");
}

//#9# Lakukan perhitungan information gain


// perhitungan information gain
// ambil nilai entropy dari total (jumlah kasus total)
$sqlEntropy2 = mysql_query("SELECT * FROM mining_c45 WHERE atribut != 'Total'");
while($rowEntropy2 = mysql_fetch_array($sqlEntropy2)) {
$sqlJumlahKasusTotalInfGain = mysql_query("SELECT jml_kasus_total, entropy FROM
mining_c45 WHERE atribut = 'Total'");
$rowJumlahKasusTotalInfGain = mysql_fetch_array($sqlJumlahKasusTotalInfGain);
$getJumlahKasusTotalInfGain = $rowJumlahKasusTotalInfGain['jml_kasus_total'];
$idEntropy2 = $rowEntropy2['id'];
$getEntropy2 = $rowEntropy2['entropy'];
// rumus information gain
if ($getEntropy2 == 0) {
$getInfGain = 0;
} else {
$getInfGain = (-(($rowEntropy2['jml_kasus_total'] / $getJumlahKasusTotalInfGain) *
($getEntropy2)));
}

//#10# Update information gain tiap nilai atribut (temporary)


// update inf_gain_temp (utk mencari nilai masing2 atribut)
mysql_query("UPDATE mining_c45 SET inf_gain_temp = $getInfGain WHERE id =
$idEntropy2");
}

$sqlAtribut = mysql_query("SELECT distinct atribut FROM atribut WHERE atribut !=


'Total'");
while($rowGetAtribut = mysql_fetch_array($sqlAtribut)) {
$getAtribut = $rowGetAtribut['atribut'];
$sqlJumlahKasusTotalSplitInfo = mysql_query("SELECT jml_kasus_total, entropy FROM
mining_c45 WHERE atribut = 'Total'");
$rowJumlahKasusTotalSplitInfo = mysql_fetch_array($sqlJumlahKasusTotalSplitInfo);
$getEntropy3 = $rowJumlahKasusTotalSplitInfo['entropy'];

// jumlahkan masing2 inf_gain_temp atribut


$sqlAtributInfGain = mysql_query("SELECT SUM(inf_gain_temp) as inf_gain FROM
mining_c45 WHERE atribut = '$getAtribut'");
while ($rowAtributInfGain = mysql_fetch_array($sqlAtributInfGain)) {
$getAtributInfGain = $rowAtributInfGain['inf_gain'];

$getInfGainFix = round(($getEntropy3 + $getAtributInfGain),4);

//#11# Looping perhitungan information gain, sehingga mendapatkan information gain tiap
atribut. Update information gain
// update inf_gain (fix)
mysql_query("UPDATE mining_c45 SET inf_gain = $getInfGainFix WHERE atribut =
'$getAtribut'");
}
}

//#12# Lakukan perhitungan split info


$sqlAtribut2 = mysql_query("SELECT * FROM mining_c45 WHERE atribut != 'Total'");
while($rowGetAtribut2 = mysql_fetch_array($sqlAtribut2)) {
$sqlJumlahKasusTotalSplitInfo = mysql_query("SELECT jml_kasus_total, entropy FROM
mining_c45 WHERE atribut = 'Total'");
$rowJumlahKasusTotalSplitInfo = mysql_fetch_array($sqlJumlahKasusTotalSplitInfo);
// rumus split info
$getSplitInfo = (($rowGetAtribut2['jml_kasus_total'] /
$rowJumlahKasusTotalSplitInfo['jml_kasus_total']) *
(log(($rowGetAtribut2['jml_kasus_total'] /
$rowJumlahKasusTotalSplitInfo['jml_kasus_total']),2)));

//#13# Update split info tiap nilai atribut (temporary)


// update split_info_temp (utk mencari nilai masing2 atribut)
mysql_query("UPDATE mining_c45 SET split_info_temp = $getSplitInfo WHERE id =
$rowGetAtribut2[id]");
}

$sqlAtribut3 = mysql_query("SELECT distinct atribut FROM atribut WHERE atribut !=


'Total'");
while($rowGetAtribut3 = mysql_fetch_array($sqlAtribut3)) {
// jumlahkan masing2 split_info_temp dari tiap atribut
$sqlAtributSplitInfo = mysql_query("SELECT SUM(split_info_temp) as split_info FROM
mining_c45 WHERE atribut = '$rowGetAtribut3[atribut]'");
while ($rowAtributSplitInfo = mysql_fetch_array($sqlAtributSplitInfo)){
$getAtributSplitInfo = $rowAtributSplitInfo['split_info'];

// split info fix (4 angka di belakang koma)


$getSplitInfoFix = -(round($getAtributSplitInfo,4));

//#14# Looping perhitungan split info, sehingga mendapatkan information gain tiap atribut.
Update information gain
// update split info (fix)
mysql_query("UPDATE mining_c45 SET split_info = $getSplitInfoFix WHERE atribut =
'$rowGetAtribut3[atribut]'");
}
}

//#15# Lakukan perhitungan gain ratio


$sqlGainRatio = mysql_query("SELECT id, inf_gain, split_info FROM mining_c45");
while($rowGainRatio = mysql_fetch_array($sqlGainRatio)) {
$idGainRatio = $rowGainRatio['id'];
// jika nilai inf gain == 0 dan split info == 0, maka gain ratio = 0
if ($rowGainRatio['inf_gain'] == 0 AND $rowGainRatio['split_info'] == 0){
$getGainRatio = 0;
} else {
// rumus gain ratio
$getGainRatio = round(($rowGainRatio['inf_gain'] /
$rowGainRatio['split_info']),4);
}

//#16# Update gain ratio dari setiap atribut


mysql_query("UPDATE mining_c45 SET gain_ratio = $getGainRatio WHERE id =
'$idGainRatio'");
}
}

//#17# Insert atribut dgn information gain max ke DB pohon keputusan


function insertAtributPohonKeputusan($atribut, $nilai_atribut)
{
// ambil nilai inf gain tertinggi dimana hanya 1 atribut saja yg dipilih
// $sqlInfGainMaxTemp2 = mysql_query("SELECT distinct atribut, split_info, gain_ratio FROM
mining_c45 WHERE gain_ratio in (SELECT max(gain_ratio) FROM `mining_c45`) AND atribut !=
'Total' LIMIT 1");
$sqlInfGainMaxTemp2 = mysql_query("SELECT distinct atribut, split_info, gain_ratio FROM
mining_c45 WHERE gain_ratio in (SELECT max(gain_ratio) FROM `mining_c45`) AND atribut !=
'Total' LIMIT 1");
$rowInfGainMaxTempFix = mysql_fetch_array($sqlInfGainMaxTemp2);
// hanya ambil atribut dimana jumlah kasus totalnya tidak kosong
// if ($rowInfGainMaxTempFix['gain_ratio'] > 0 OR $rowInfGainMaxTempFix['split_info'] > 0)
{
if ($rowInfGainMaxTempFix['gain_ratio'] > 0) {
// ambil nilai atribut yang memiliki nilai inf gain max
$sqlInfGainMax = mysql_query("SELECT * FROM mining_c45 WHERE atribut =
'$rowInfGainMaxTempFix[atribut]'");
while($rowInfGainMax = mysql_fetch_array($sqlInfGainMax)) {
if ($rowInfGainMax['jml_kasus_rendah'] == 0 AND $rowInfGainMax['jml_kasus_sedang']
== 0 AND $rowInfGainMax['jml_kasus_tinggi'] == 0) {
$keputusan = 'Null';
} else if ($rowInfGainMax['jml_kasus_rendah'] !== 0 AND
$rowInfGainMax['jml_kasus_sedang'] == 0 AND $rowInfGainMax['jml_kasus_tinggi'] == 0) {
$keputusan = 'Rendah';
} else if ($rowInfGainMax['jml_kasus_rendah'] == 0 AND
$rowInfGainMax['jml_kasus_sedang'] !== 0 AND $rowInfGainMax['jml_kasus_tinggi'] == 0) {
$keputusan = 'Sedang';
} else if ($rowInfGainMax['jml_kasus_rendah'] == 0 AND
$rowInfGainMax['jml_kasus_sedang'] == 0 AND $rowInfGainMax['jml_kasus_tinggi'] !== 0) {
$keputusan = 'Tinggi';
} else {
$keputusan = '?';
}

if (empty($atribut) AND empty($nilai_atribut)) {


//#18# Jika atribut yang diinput kosong (atribut awal) maka insert ke pohon keputusan
id_parent = 0
// set kondisi atribut = AND atribut = nilai atribut
$kondisiAtribut = "AND $rowInfGainMax[atribut] =
~$rowInfGainMax[nilai_atribut]~";
// insert ke tabel pohon keputusan
mysql_query("INSERT INTO pohon_keputusan_c45 VALUES ('',
'$rowInfGainMax[atribut]', '$rowInfGainMax[nilai_atribut]', 0,
'$rowInfGainMax[jml_kasus_rendah]', '$rowInfGainMax[jml_kasus_sedang]',
'$rowInfGainMax[jml_kasus_tinggi]', '$keputusan', 'Belum', '$kondisiAtribut', 'Belum')");
}

//#19# Jika atribut yang diinput tidak kosong maka insert ke pohon keputusan dimana id_parent
diambil dari tabel pohon keputusan sebelumnya (where atribut = atribut yang diinput)
else if (!empty($atribut) AND !empty($nilai_atribut)) {
$sqlIdParent = mysql_query("SELECT id, atribut, nilai_atribut,
jml_kasus_rendah, jml_kasus_sedang, jml_kasus_tinggi FROM pohon_keputusan_c45 WHERE atribut =
'$atribut' AND nilai_atribut = '$nilai_atribut' order by id DESC LIMIT 1");
$rowIdParent = mysql_fetch_array($sqlIdParent);

mysql_query("INSERT INTO pohon_keputusan_c45 VALUES ('',


'$rowInfGainMax[atribut]', '$rowInfGainMax[nilai_atribut]', $rowIdParent[id],
'$rowInfGainMax[jml_kasus_rendah]', '$rowInfGainMax[jml_kasus_sedang]',
'$rowInfGainMax[jml_kasus_tinggi]', '$keputusan', 'Belum', '', 'Belum')");

//#PRE PRUNING#
echo "<br>#PRE PRUNING#<br>";
// hitung Pessimistic error rate parent dan child
echo "perhitungan pre pruning untuk parent ($rowIdParent[atribut] =
$rowIdParent[nilai_atribut])<br>";
echo "perhitungan pre pruning untuk child ($rowInfGainMax[atribut] =
$rowInfGainMax[nilai_atribut])<br>";

$perhitunganParentPrePruning =
loopingPerhitunganPrePruning($rowIdParent['jml_kasus_tinggi'],
$rowIdParent['jml_kasus_sedang'], $rowIdParent['jml_kasus_rendah']);
$perhitunganChildPrePruning =
loopingPerhitunganPrePruning($rowInfGainMax['jml_kasus_tinggi'],
$rowInfGainMax['jml_kasus_sedang'], $rowInfGainMax['jml_kasus_rendah']);

echo "pessimistic error rate parent = $perhitunganParentPrePruning;


pessimistic error rate child = $perhitunganChildPrePruning<br>";

// hitung average Pessimistic error rate child


$perhitunganPessimisticChild = (($rowInfGainMax['jml_kasus_tinggi'] +
$rowInfGainMax['jml_kasus_sedang'] + $rowInfGainMax['jml_kasus_rendah']) /
($rowIdParent['jml_kasus_tinggi'] + $rowIdParent['jml_kasus_sedang'] +
$rowIdParent['jml_kasus_rendah'])) * $perhitunganChildPrePruning;
echo "perhitunganPessimisticChild = (($rowInfGainMax[jml_kasus_tinggi] +
$rowInfGainMax[jml_kasus_sedang] + $rowInfGainMax[jml_kasus_rendah]) /
($rowIdParent[jml_kasus_tinggi] + $rowIdParent[jml_kasus_sedang] +
$rowIdParent[jml_kasus_rendah])) * $perhitunganChildPrePruning<br>";
// Increment average Pessimistic error rate child
$perhitunganPessimisticChildIncrement += $perhitunganPessimisticChild;
$perhitunganPessimisticChildIncrement =
round($perhitunganPessimisticChildIncrement, 4);

// jika error rate pada child lebih besar dari error rate parent
if ($perhitunganPessimisticChildIncrement >= $perhitunganParentPrePruning) {
echo "nilai pessimistic error rate child
($perhitunganPessimisticChildIncrement) lebih besar dari pessimistic error rate parent
($perhitunganParentPrePruning),
sehingga child dihapus<br>";
// hapus child (child Tidak diinginkan)
mysql_query("DELETE FROM pohon_keputusan_c45 WHERE id_parent =
$rowIdParent[id]");

if ($rowIdParent['jml_kasus_tinggi'] > $rowIdParent['jml_kasus_sedang']


AND $rowIdParent['jml_kasus_tinggi'] > $rowIdParent['jml_kasus_rendah']) {
$keputusanPrePruning = 'Tinggi';
} else if ($rowIdParent['jml_kasus_tinggi'] <
$rowIdParent['jml_kasus_sedang'] AND $rowIdParent['jml_kasus_rendah'] <
$rowIdParent['jml_kasus_sedang']) {
$keputusanPrePruning = 'Sedang';
} else if ($rowIdParent['jml_kasus_tinggi'] <
$rowIdParent['jml_kasus_rendah'] AND $rowIdParent['jml_kasus_sedang'] <
$rowIdParent['jml_kasus_rendah']) {
$keputusanPrePruning = 'Rendah';
}
// update keputusan parent
mysql_query("UPDATE pohon_keputusan_c45 SET keputusan =
'$keputusanPrePruning' where id = $rowIdParent[id]");
} else {
echo "nilai pessimistic error rate child
($perhitunganPessimisticChildIncrement) lebih kecil dari pessimistic error rate parent
($perhitunganParentPrePruning),
sehingga child tidak dihapus<br>";
}

}
}
}
loopingKondisiAtribut();
}

//#20# Lakukan looping kondisi atribut untuk diproses pada fungsi perhitunganC45()
function loopingKondisiAtribut()
{
// ambil semua id dan kondisi atribut
$sqlLoopingKondisi = mysql_query("SELECT id, kondisi_atribut FROM pohon_keputusan_c45");
while($rowLoopingKondisi = mysql_fetch_array($sqlLoopingKondisi)) {
// select semua data dimana id_parent = id awal
$sqlUpdateKondisi = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE id_parent =
$rowLoopingKondisi[id] AND looping_kondisi = 'Belum'");
while($rowUpdateKondisi = mysql_fetch_array($sqlUpdateKondisi)) {
// set kondisi: kondisi sebelumnya yg diselect berdasarkan id_parent ditambah 'AND
atribut = nilai atribut'
$kondisiAtribut = "$rowLoopingKondisi[kondisi_atribut] AND
$rowUpdateKondisi[atribut] = ~$rowUpdateKondisi[nilai_atribut]~";
// update kondisi atribut
mysql_query("UPDATE pohon_keputusan_c45 SET kondisi_atribut = '$kondisiAtribut',
looping_kondisi = 'Sudah' WHERE id = $rowUpdateKondisi[id]");
}
}
}

//#22# Ambil information gain max untuk diproses pada fungsi loopingMiningC45()
function getInfGainMax($atribut, $nilai_atribut)
{
// select inf gain max
$sqlInfGainMaxAtribut = mysql_query("SELECT distinct atribut FROM mining_c45 WHERE
gain_ratio in (SELECT max(gain_ratio) FROM `mining_c45`) AND atribut != 'Total' LIMIT 1");
while($rowInfGainMaxAtribut = mysql_fetch_array($sqlInfGainMaxAtribut)) {
$inf_gain_max_atribut = "$rowInfGainMaxAtribut[atribut]";
if (empty($atribut) AND empty($nilai_atribut)) {
// jika atribut kosong, proses atribut dgn inf gain max pada fungsi
loopingMiningC45()
loopingMiningC45($inf_gain_max_atribut);
} else if (!empty($atribut) AND !empty($nilai_atribut)) {
// proses atribut dgn inf gain max pada fungsi loopingMiningC45()
loopingMiningC45($inf_gain_max_atribut);
}
}
}

//#23# Looping proses mining dimana atribut dgn information gain max yang akan diproses pada
fungsi miningC45()
function loopingMiningC45($inf_gain_max_atribut)
{
$sqlBelumAdaKeputusanLagi = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE keputusan
= '?' and diproses = 'Belum' AND atribut = '$inf_gain_max_atribut'");
while($rowBelumAdaKeputusanLagi = mysql_fetch_array($sqlBelumAdaKeputusanLagi)) {
populateAtribut();
$atribut = "$rowBelumAdaKeputusanLagi[atribut]";
$nilai_atribut = "$rowBelumAdaKeputusanLagi[nilai_atribut]";
mysql_query("TRUNCATE mining_c45");
hapusAtributParent($rowBelumAdaKeputusanLagi['id']);
miningC45($atribut, $nilai_atribut);
mysql_query("UPDATE pohon_keputusan_c45 SET diproses = 'Sudah' WHERE id =
'$rowBelumAdaKeputusanLagi[id]'");
}
}

function perhitunganPrePruning($r, $z, $n)


{
$rumus = ($r + (($z * $z) / (2 * $n)) + ($z * (sqrt(($r / $n) - (($r * $r) / $n) + (($z *
$z) / (4 * ($n * $n))))))) / (1 + (($z * $z) / $n));
$rumus = round($rumus, 8);
return $rumus;
}

// looping perhitungan Pessimistic error rate


function loopingPerhitunganPrePruning($kelas1, $kelas2, $kelas3)
{
$z = 0.69;
// $z = 1.645;
$n = $kelas1 + $kelas2; // n = total jml kasus
$n = round($n, 4);
// r = perbandingan child thd parent
if ($kelas1 < $kelas2 AND $kelas1 < $kelas3) {
$r = $kelas1 / ($n);
$r = round($r, 4);
return perhitunganPrePruning($r, $z, $n);
} elseif ($kelas1 > $kelas2 AND $kelas3 > $kelas2) {
$r = $kelas2 / ($n);
$r = round($r, 4);
return perhitunganPrePruning($r, $z, $n);
} elseif ($kelas1 > $kelas3 AND $kelas2 > $kelas3) {
$r = $kelas3 / ($n);
$r = round($r, 4);
return perhitunganPrePruning($r, $z, $n);
} elseif ($kelas1 == $kelas2 AND $kelas1 == $kelas3) {
$r = $kelas1 / ($n);
$r = round($r, 4);
return perhitunganPrePruning($r, $z, $n);
}

if ($kelas1 == $kelas2 AND $kelas1 < $kelas3) {


$r = $kelas1 / ($n);
$r = round($r, 4);
// return perhitunganPrePruning($r, $z, $n);
return 0;
} elseif ($kelas2 == $kelas3 AND $kelas2 < $kelas1) {
$r = $kelas2 / ($n);
$r = round($r, 4);
// return perhitunganPrePruning($r, $z, $n);
return 0;
} elseif ($kelas3 == $kelas1 AND $kelas3 < $kelas2) {
$r = $kelas3 / ($n);
$r = round($r, 4);
// return perhitunganPrePruning($r, $z, $n);
return 0;
}
}

// update keputusan jika ada keputusan yg Null dan ?


function updateKeputusanUnknown()
{
$sqlReplaceUnknownIdParent = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE
keputusan = '?' and id not in (select id_parent from pohon_keputusan_c45)");
while($rowReplaceUnknownIdParent = mysql_fetch_array($sqlReplaceUnknownIdParent)){
if ($rowReplaceUnknownIdParent['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent['jml_kasus_tinggi']) {
$keputusanUnknown = 'Rendah';
} else if ($rowReplaceUnknownIdParent['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent['jml_kasus_rendah'] AND
$rowReplaceUnknownIdParent['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent['jml_kasus_tinggi']) {
$keputusanUnknown = 'Sedang';
} else if ($rowReplaceUnknownIdParent['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent['jml_kasus_rendah']) {
$keputusanUnknown = 'Tinggi';
} else if ($rowReplaceUnknownIdParent['jml_kasus_rendah'] ==
$rowReplaceUnknownIdParent['jml_kasus_sedang'] OR
$rowReplaceUnknownIdParent['jml_kasus_rendah'] ==
$rowReplaceUnknownIdParent['jml_kasus_tinggi'] OR
$rowReplaceUnknownIdParent['jml_kasus_sedang'] ==
$rowReplaceUnknownIdParent['jml_kasus_tinggi']) {
$sqlReplaceUnknownIdParent2 = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE
id = $rowReplaceUnknownIdParent[id_parent]");
$rowReplaceUnknownIdParent2 = mysql_fetch_array($sqlReplaceUnknownIdParent2);
if ($rowReplaceUnknownIdParent2['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent2['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent2['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent2['jml_kasus_tinggi']) {
$keputusanUnknown = 'Rendah';
} else if ($rowReplaceUnknownIdParent2['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent2['jml_kasus_rendah'] AND
$rowReplaceUnknownIdParent2['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent2['jml_kasus_tinggi']) {
$keputusanUnknown = 'Sedang';
} else if ($rowReplaceUnknownIdParent2['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent2['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent2['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent2['jml_kasus_rendah']) {
$keputusanUnknown = 'Tinggi';
} else if ($rowReplaceUnknownIdParent2['jml_kasus_rendah'] ==
$rowReplaceUnknownIdParent2['jml_kasus_sedang'] OR
$rowReplaceUnknownIdParent2['jml_kasus_rendah'] ==
$rowReplaceUnknownIdParent2['jml_kasus_tinggi'] OR
$rowReplaceUnknownIdParent2['jml_kasus_sedang'] ==
$rowReplaceUnknownIdParent2['jml_kasus_tinggi']) {
$sqlReplaceUnknownIdParent2 = mysql_query("SELECT * FROM pohon_keputusan_c45
WHERE id = $rowReplaceUnknownIdParent2[id_parent]");
$rowReplaceUnknownIdParent3 = mysql_fetch_array($sqlReplaceUnknownIdParent2);
if ($rowReplaceUnknownIdParent3['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent3['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent3['jml_kasus_rendah'] >
$rowReplaceUnknownIdParent3['jml_kasus_tinggi']) {
$keputusanUnknown = 'Rendah';
} else if ($rowReplaceUnknownIdParent3['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent3['jml_kasus_rendah'] AND
$rowReplaceUnknownIdParent3['jml_kasus_sedang'] >
$rowReplaceUnknownIdParent3['jml_kasus_tinggi']) {
$keputusanUnknown = 'Sedang';
} else if ($rowReplaceUnknownIdParent3['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent3['jml_kasus_sedang'] AND
$rowReplaceUnknownIdParent3['jml_kasus_tinggi'] >
$rowReplaceUnknownIdParent3['jml_kasus_rendah']) {
$keputusanUnknown = 'Tinggi';
}
}
}
mysql_query("UPDATE pohon_keputusan_c45 SET keputusan = '$keputusanUnknown' WHERE id =
$rowReplaceUnknownIdParent[id]");
}

$sqlReplaceNull = mysql_query("SELECT id, id_parent FROM pohon_keputusan_c45 WHERE


keputusan = 'Null'");
while($rowReplaceNull = mysql_fetch_array($sqlReplaceNull)) {
$sqlReplaceNullIdParent = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE id =
$rowReplaceNull[id_parent]");
$rowReplaceNullIdParent = mysql_fetch_array($sqlReplaceNullIdParent);
if ($rowReplaceNullIdParent['jml_kasus_rendah'] >
$rowReplaceNullIdParent['jml_kasus_sedang'] AND $rowReplaceNullIdParent['jml_kasus_rendah'] >
$rowReplaceNullIdParent['jml_kasus_tinggi']) {
$keputusanNull = 'Rendah';
} else if ($rowReplaceNullIdParent['jml_kasus_sedang'] >
$rowReplaceNullIdParent['jml_kasus_rendah'] AND $rowReplaceNullIdParent['jml_kasus_sedang'] >
$rowReplaceNullIdParent['jml_kasus_tinggi']) {
$keputusanNull = 'Sedang';
} else if ($rowReplaceNullIdParent['jml_kasus_tinggi'] >
$rowReplaceNullIdParent['jml_kasus_sedang'] AND $rowReplaceNullIdParent['jml_kasus_tinggi'] >
$rowReplaceNullIdParent['jml_kasus_rendah']) {
$keputusanNull = 'Tinggi';
}
mysql_query("UPDATE pohon_keputusan_c45 SET keputusan = '$keputusanNull' WHERE id =
$rowReplaceNull[id]");
}

$sqlReplaceNull2 = mysql_query("SELECT id, id_parent FROM pohon_keputusan_c45 WHERE


keputusan = ''");
while($rowReplaceNull2 = mysql_fetch_array($sqlReplaceNull2)) {
$sqlReplaceNull2IdParent = mysql_query("SELECT * FROM pohon_keputusan_c45 WHERE id =
$rowReplaceNull2[id_parent]");
$rowReplaceNull2IdParent = mysql_fetch_array($sqlReplaceNull2IdParent);
if ($rowReplaceNull2IdParent['jml_kasus_rendah'] >
$rowReplaceNull2IdParent['jml_kasus_sedang'] AND $rowReplaceNull2IdParent['jml_kasus_rendah']
> $rowReplaceNull2IdParent['jml_kasus_tinggi']) {
$keputusanNull2 = 'Rendah';
} else if ($rowReplaceNull2IdParent['jml_kasus_sedang'] >
$rowReplaceNull2IdParent['jml_kasus_rendah'] AND $rowReplaceNull2IdParent['jml_kasus_sedang']
> $rowReplaceNull2IdParent['jml_kasus_tinggi']) {
$keputusanNull2 = 'Sedang';
} else if ($rowReplaceNull2IdParent['jml_kasus_tinggi'] >
$rowReplaceNull2IdParent['jml_kasus_sedang'] AND $rowReplaceNull2IdParent['jml_kasus_tinggi']
> $rowReplaceNull2IdParent['jml_kasus_rendah']) {
$keputusanNull2 = 'Tinggi';
}
mysql_query("UPDATE pohon_keputusan_c45 SET keputusan = '$keputusanNull2' WHERE id =
$rowReplaceNull2[id]");
}
mysql_query("UPDATE pohon_keputusan_c45 SET keputusan = 'Null' WHERE keputusan = ''");
}

function generateRuleAwal($idparent, $spasi)


{
// ambil data pohon keputusan
$sqlGetIdParent = mysql_query("select * from pohon_keputusan_c45 where
id_parent='$idparent'");
while($rowGetIdParent = mysql_fetch_array($sqlGetIdParent)){
if (!empty($rowGetIdParent)) {
// ambil data pohon keputusan dimana id = idparent
$sqlGetId = mysql_query("select * from pohon_keputusan_c45 where
id='$rowGetIdParent[id_parent]'");
$rowGetId = mysql_fetch_array($sqlGetId);
// jika atribut dan nilai atribut masih kosong
if (empty($rowGetId['atribut']) AND empty($rowGetId['nilai_atribut'])){
// insert pada db rule_c45
mysql_query("insert into rule_c45 values ('', '$rowGetIdParent[id_parent]',
'$rowGetIdParent[atribut] == $rowGetIdParent[nilai_atribut]', '$rowGetIdParent[keputusan]')");
} else {
// insert pada db rule_c45
mysql_query("insert into rule_c45 values ('', '$rowGetIdParent[id_parent]',
'$rowGetId[atribut] == $rowGetId[nilai_atribut] AND $rowGetIdParent[atribut] ==
$rowGetIdParent[nilai_atribut]', '$rowGetIdParent[keputusan]')");
}
// looping dirinya sendiri
generateRuleAwal($rowGetIdParent['id'], $spasi + 1);
}
}
}

function generateRuleLooping()
{
// ambil data rule
$sqlGetDataRule = mysql_query("select * from rule_c45 order by id");
while($rowGetDataRule=mysql_fetch_array($sqlGetDataRule)){
if (!empty($rowGetDataRule)) {
// ambil idparent rule dimana id = idparent
$sqlGetIdParentUpdateRule = mysql_query("select id_parent from pohon_keputusan_c45
where id = '$rowGetDataRule[id_parent]'");
$rowGetIdParentUpdateRule=mysql_fetch_array($sqlGetIdParentUpdateRule);

$sqlGetIdUpdateRule = mysql_query("select * from pohon_keputusan_c45 where id =


'$rowGetIdParentUpdateRule[id_parent]'");
while($rowGetIdUpdateRule=mysql_fetch_array($sqlGetIdUpdateRule)){
// bentuk rule
$rule = "$rowGetIdUpdateRule[atribut] == $rowGetIdUpdateRule[nilai_atribut]
AND $rowGetDataRule[rule]";
// update rule
mysql_query("update rule_c45 set rule = '$rule', id_parent =
'$rowGetIdParentUpdateRule[id_parent]' where id = '$rowGetDataRule[id]'");
}

// ambil data pohon dimana idparent = 0 (root)


$sqlGetDataPohonKeputusan = mysql_query("select * from pohon_keputusan_c45 where
id_parent = 0");
while($rowGetDataPohonKeputusan=mysql_fetch_array($sqlGetDataPohonKeputusan)){
// jika idparent rule == id pohon
if ($rowGetDataRule['id_parent'] == $rowGetDataPohonKeputusan['id']){
// update rule set id = id rule
mysql_query("update rule_c45 set id_parent = 0 where id =
'$rowGetDataRule[id]'");
}
}
}
}
}

function generateRuleFinalPrePruning()
{
// panggil fungsi generateRuleAwal()
generateRuleAwal("0", 0);
// ambil data rule
$sqlUpdateRule = mysql_query("select * from rule_c45 order by id" );
while($rowUpdateRule=mysql_fetch_array($sqlUpdateRule)){
if (!empty($rowUpdateRule)) {
// jika idparent rule == 0
if ($rowUpdateRule['id_parent'] !== 0){
// lakukan fungsi generateRuleLooping()
generateRuleLooping();
// delete rule dimana keputusan == ?
mysql_query("delete from rule_c45 where keputusan = '?'");
}
}
}
}

function insertRuleC45PrePruning()
{
// ambil data pada db rule_c45
$sqlRuleC45 = mysql_query("SELECT id, rule, keputusan FROM rule_c45");
while($rowRuleC45 = mysql_fetch_array($sqlRuleC45)) {
$RuleC45 = "$rowRuleC45[rule]";
// explode string ' AND ' utk mendapatkan atribut
$explodeRuleC45 = explode(" AND ", $RuleC45);
foreach ($explodeRuleC45 as $dataExplodeRuleC45) {
// explode string ' == ' utk mendapatkan nilai atribut
$dataFixRuleC45 = explode(" == ", $dataExplodeRuleC45);
// insert into db
mysql_query("INSERT INTO rule_penentu_keputusan VALUES('', $rowRuleC45[id],
'$dataFixRuleC45[0]', '$dataFixRuleC45[1]', '$rowRuleC45[keputusan]', '', 'C45')");
}
}
}

function get_subfolder($idparent, $spasi){


// if ($_SESSION[leveluser]=='admin'){
$result = mysql_query("select * from pohon_keputusan_c45 where id_parent=
'$idparent'");
// }
while($row=mysql_fetch_row($result)){
for($i=1;$i<=$spasi;$i++){
echo "|&nbsp;&nbsp;";
}
if ($row[7] === 'Tinggi') {
$keputusan = "<font color=red>$row[7]</font>";
} elseif ($row[7] === 'Sedang') {
$keputusan = "<font color=blue>$row[7]</font>";
} elseif ($row[7] === 'Rendah') {
$keputusan = "<font color=green>$row[7]</font>";
} elseif ($row[7] === '?') {
$keputusan = "<font color=purple>$row[7]</font>";
} else {
$keputusan = "<b>$row[7]</b>";
}
echo "<font color=red>$row[1]</font> = $row[2] (Rendah = $row[4], Sedang = $row[5],
Tinggi = $row[6]) : <b>$keputusan</b><br>";

/*panggil dirinya sendiri*/


get_subfolder($row[0], $spasi + 1);
}
}

40. Klasifikasi_sekolah_c45/admin/modul/function/penentuKeputusan.php
<?php
error_reporting(0);
session_start();
include "../../../config/koneksi.php";
mysql_query("TRUNCATE data_penentu_keputusan");

// buat variabel baru yg berisi data yg di post-kan


$npsn = $_POST['npsn'];
$nama_sekolah = $_POST['nama_sekolah'];
$kecamatan = $_POST['kecamatan'];
$status_sekolah = $_POST['status_sekolah'];
$tw_1 = $_POST['tw_1'];
$tw_2 = $_POST['tw_2'];
$tw_3 = $_POST['tw_3'];
$tahun = $_POST['tahun'];
// masukkan variabel pada array
$array2 = array("status_sekolah" => "$status_sekolah",
"tw_1" => "$tw_1",
"tw_2" => "$tw_2",
"tw_3" => "$tw_3"
);

$sqlSelectDistinctAtribut = mysql_query("SELECT distinct atribut FROM pohon_keputusan_c45");


while($rowSelectDistinctAtribut = mysql_fetch_array($sqlSelectDistinctAtribut)) {
if (!empty($rowSelectDistinctAtribut)) {
foreach ($array2 as $atribut_array => $nilai_atribut_array) {
// jika atribut pada pohon sama dgn atribut yg ada di array (atribut yg di post-
kan) maka insert atribut dan nilai atribut pada db
if ($rowSelectDistinctAtribut['atribut'] == $atribut_array) {
mysql_query("INSERT INTO data_penentu_keputusan VALUES('', '$atribut_array',
'$nilai_atribut_array')");
}
}
}
}

$arrayPenentuKeputusan = array(); // buat array baru


// ambil atribut dan nilai atribut pada db data penentu keputusan
$sqlDataPenentuKeputusan = mysql_query("SELECT atribut, nilai_atribut FROM
data_penentu_keputusan");
while($rowDataPenentuKeputusan = mysql_fetch_array($sqlDataPenentuKeputusan)) {
// ambil atribut dan nilai atribut pada db rule_penentu_keputusan
$sqlRulePenentuKeputusan = mysql_query("SELECT id, atribut, nilai_atribut FROM
rule_penentu_keputusan where pohon = 'C45'");
while($rowRulePenentuKeputusan = mysql_fetch_array($sqlRulePenentuKeputusan)) {
if (!empty($rowRulePenentuKeputusan)) {
// jika atribut pada db data_penentu_keputusan sama dengan atribut pada db
rule_penentu_keputusan
if ($rowRulePenentuKeputusan['atribut'] == $rowDataPenentuKeputusan['atribut']) {
// jika nilai atribut pada db data_penentu_keputusan sama dengan nilai atribut
pada db rule_penentu_keputusan
if ($rowRulePenentuKeputusan['nilai_atribut'] ==
$rowDataPenentuKeputusan['nilai_atribut']) {
// set nilai id, cocok dan masukkan pada array
$arrayPenentuKeputusanTemp['id'] = $rowRulePenentuKeputusan['id'];
$arrayPenentuKeputusanTemp['cocok'] = "Ya";
$arrayPenentuKeputusan[] = $arrayPenentuKeputusanTemp;
} elseif ($rowRulePenentuKeputusan['nilai_atribut'] !==
$rowDataPenentuKeputusan['nilai_atribut']) {
// set nilai id, cocok dan masukkan pada array
$arrayPenentuKeputusanTemp['id'] = $rowRulePenentuKeputusan['id'];
$arrayPenentuKeputusanTemp['cocok'] = "Tidak";
$arrayPenentuKeputusan[] = $arrayPenentuKeputusanTemp;
}
}
}
}
}

foreach ($arrayPenentuKeputusan as $arrayPenentuKeputusanUpdate) {


// update nilai cocok dari array sebelumnya
mysql_query("UPDATE rule_penentu_keputusan SET cocok =
'$arrayPenentuKeputusanUpdate[cocok]' where id = $arrayPenentuKeputusanUpdate[id]");
}

// queri utk mengambil keputusan dan id rule berdasarkan nilai atribut yg cocok (nilai atribut
rule == nilai atribut yg dipost-kan)
$sqlKeputusan = mysql_query("SELECT distinct id_rule, keputusan FROM `rule_penentu_keputusan`
WHERE pohon = 'C45' AND cocok = 'Ya' and id_rule not in (select distinct id_rule from
`rule_penentu_keputusan` where pohon = 'C45' AND cocok = 'Tidak')");
$rowKeputusan = mysql_fetch_array($sqlKeputusan);
if (!empty($rowKeputusan)) {
$keputusan = "$rowKeputusan[keputusan]";
$idRule = "$rowKeputusan[id_rule]";

// insert data_keputusan pada db


mysql_query("INSERT INTO data_keputusan VALUES('',
'$npsn',
'$nama_sekolah',
'$kecamatan',
'$status_sekolah',
'$tw_1',
'$tw_2',
'$tw_3',
'$tahun',
'$keputusan',
'$idRule')
");
}
if ($_SESSION[leveluser]=='admin'){
echo "<script>alert('Data berhasil diinput! Keputusan yang dihasilkan adalah :
$keputusan'); document.location.href='../../media.php?module=penentu_keputusan';</script>\n";
} else {
echo "<script>alert('Data berhasil diinput! Keputusan yang dihasilkan adalah :
$keputusan'); document.location.href='../../user.php?module=penentu_keputusan';</script>\n";
}
41. Klasifikasi_sekolah_c45/admin/modul/function/penentuKeputusanImport.php
<?php
include "../../../config/koneksi.php";

$arrayPerbandingan = array(); // buat array baru


// ambil data survey
$sqlDataTesting = mysql_query("SELECT * FROM data_keputusan where keputusan_c45 = ''");
while($rowDataTesting = mysql_fetch_array($sqlDataTesting)) {
if (!empty($rowDataTesting)) {
// masukkan tiap nilai atribut data survey pada array
$array['id'] = $rowDataTesting['id'];
$array['npsn'] = $rowDataTesting['npsn'];
$array['nama_sekolah'] = $rowDataTesting['nama_sekolah'];
$array['kecamatan'] = $rowDataTesting['kecamatan'];
$array['status_sekolah'] = $rowDataTesting['status_sekolah'];
$array['tw_1'] = $rowDataTesting['tw_1'];
$array['tw_2'] = $rowDataTesting['tw_2'];
$array['tw_3'] = $rowDataTesting['tw_3'];
$array['tahun'] = $rowDataTesting['tahun'];
$array['class'] = $rowDataTesting['class'];
$arrayPerbandingan[] = $array;
}
}
foreach ($arrayPerbandingan as $atribut) {
// ambil atribut dan panggil fungsi penentuKeputusan()
penentuKeputusan($atribut);
}

function penentuKeputusan($atribut) {
mysql_query("TRUNCATE data_penentu_keputusan");

// buat variabel baru dan masukkan masing-masing atribut


$id = $atribut['id'];
$npsn = $atribut['npsn'];
$nama_sekolah = $atribut['nama_sekolah'];
$kecamatan = $atribut['kecamatan'];
$status_sekolah = $atribut['status_sekolah'];
$tw_1 = $atribut['tw_1'];
$tw_2 = $atribut['tw_2'];
$tw_3 = $atribut['tw_3'];
$tahun = $atribut['tahun'];
$class = $atribut['class'];

// masukkan variabel pada array


$array2 = array("status_sekolah" => "$status_sekolah",
"tw_1" => "$tw_1",
"tw_2" => "$tw_2",
"tw_3" => "$tw_3"
);

// ambil atribut yang ada di pohon


$sqlSelectDistinctAtribut = mysql_query("SELECT distinct atribut FROM
pohon_keputusan_c45");
while($rowSelectDistinctAtribut = mysql_fetch_array($sqlSelectDistinctAtribut)) {
if (!empty($rowSelectDistinctAtribut)) {
foreach ($array2 as $atribut_array => $nilai_atribut_array) {
// jika atribut pada pohon sama dgn atribut yg ada di array (atribut yg di
post-kan) maka insert atribut dan nilai atribut pada db
if ($rowSelectDistinctAtribut['atribut'] == $atribut_array) {
mysql_query("INSERT INTO data_penentu_keputusan VALUES('',
'$atribut_array', '$nilai_atribut_array')");
}
}
}
}
$arrayPenentuKeputusan = array(); // buat array baru
// ambil atribut dan nilai atribut pada db data penentu keputusan
$sqlDataPenentuKeputusan = mysql_query("SELECT * FROM data_penentu_keputusan");
while($rowDataPenentuKeputusan = mysql_fetch_array($sqlDataPenentuKeputusan)) {
$sqlRulePenentuKeputusan = mysql_query("SELECT * FROM rule_penentu_keputusan where
pohon = 'C45'");
while($rowRulePenentuKeputusan = mysql_fetch_array($sqlRulePenentuKeputusan)) {
if (!empty($rowRulePenentuKeputusan)) {
// jika atribut pada db data_penentu_keputusan sama dengan atribut pada db
rule_penentu_keputusan
if ($rowRulePenentuKeputusan['atribut'] ==
$rowDataPenentuKeputusan['atribut']) {
// jika nilai atribut pada db data_penentu_keputusan sama dengan nilai
atribut pada db rule_penentu_keputusan
if ($rowRulePenentuKeputusan['nilai_atribut'] ==
$rowDataPenentuKeputusan['nilai_atribut']) {
// set nilai id, cocok dan masukkan pada array
$arrayPenentuKeputusanTemp['id'] = $rowRulePenentuKeputusan['id'];
$arrayPenentuKeputusanTemp['cocok'] = "Ya";
$arrayPenentuKeputusan[] = $arrayPenentuKeputusanTemp;
} elseif ($rowRulePenentuKeputusan['nilai_atribut'] !==
$rowDataPenentuKeputusan['nilai_atribut']) {
// set nilai id, cocok dan masukkan pada array
$arrayPenentuKeputusanTemp['id'] = $rowRulePenentuKeputusan['id'];
$arrayPenentuKeputusanTemp['cocok'] = "Tidak";
$arrayPenentuKeputusan[] = $arrayPenentuKeputusanTemp;
}
}
}
}
}

foreach ($arrayPenentuKeputusan as $arrayPenentuKeputusanUpdate) {


// update nilai cocok dari array sebelumnya
mysql_query("UPDATE rule_penentu_keputusan SET cocok =
'$arrayPenentuKeputusanUpdate[cocok]' where id = $arrayPenentuKeputusanUpdate[id]");
}

// queri utk mengambil keputusan dan id rule berdasarkan nilai atribut yg cocok (nilai
atribut rule == nilai atribut yg dipost-kan)
$sqlKeputusan = mysql_query("SELECT distinct id_rule, keputusan FROM
`rule_penentu_keputusan` WHERE pohon = 'C45' AND cocok = 'Ya' and id_rule not in (select
distinct id_rule from `rule_penentu_keputusan` where pohon = 'C45' AND cocok = 'Tidak')");
$rowKeputusan = mysql_fetch_array($sqlKeputusan);
if (!empty($rowKeputusan)) {
$keputusan = "$rowKeputusan[keputusan]";
$idRule = "$rowKeputusan[id_rule]";

// insert data keputusan pada db


mysql_query("UPDATE data_keputusan SET keputusan_c45 = '$keputusan', id_rule_c45 =
'$idRule' WHERE id = '$id'");
}
}

You might also like