0% found this document useful (0 votes)
119 views

Source Code Program

Uploaded by

Noprian Rizki
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
119 views

Source Code Program

Uploaded by

Noprian Rizki
Copyright
© © All Rights Reserved
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