Sunday, May 27, 2018

Regresi Linear Sederhana Dengan Sci-kit Learn

Linear Regresi Sederhana
Data pelatihan digunakan untuk memperkirakan parameter model dalam masalah pembelajaran yang diawasi. Observasi terakhir dari variabel explanatory dan variabel responnya yang sesuai terdiri dari data pelatihan. Model dapat digunakan untuk memprediksi nilai variabel respon untuk nilai-nilai variabel explanatory yang belum pernah diamati sebelumnya.

Ingat bahwa tujuan dalam masalah regresi adalah memprediksi nilai variabel respons kontinyu. Dalam bab ini, kita akan memeriksa beberapa contoh model regresi linier. Kami akan membahas data pelatihan, model, algoritma pembelajaran, dan metrik evaluasi untuk setiap pendekatan. Untuk memulai, mari kita pertimbangkan regresi linier sederhana. Regresi linear sederhana dapat digunakan untuk memodelkan hubungan linear antara satu variabel respon dan satu variabel explanatory. Regresi linear telah diterapkan pada banyak masalah ilmiah dan sosial yang penting; contoh yang akan kita pertimbangkan mungkin bukan salah satunya.

Misalkan Anda ingin tahu harga pizza. Anda mungkin hanya melihat menu. Dalam kasus pembelajaran mesin, kami akan menggunakan regresi linier sederhana, bukan untuk memprediksi harga pizza berdasarkan atribut pizza yang dapat diamati. Mari kita memodelkan hubungan antara ukuran pizza dan harganya. Pertama, kita akan menulis program dengan scikit-learn yang dapat memprediksi harga pizza yang diberikan ukurannya. Kemudian, kita akan membahas bagaimana regresi linier sederhana bekerja dan bagaimana itu dapat digeneralisasikan untuk bekerja dengan jenis masalah lainnya. Mari kita asumsikan bahwa Anda telah mencatat diameter dan harga pizza yang sebelumnya telah Anda makan di jurnal pizza Anda. Observasi ini terdiri dari data pelatihan kami:
Kita dapat memvisualisasikan data pelatihan kami dengan memplotkannya pada grafik menggunakan matplotlib:
import matplotlib.pyplot as plt
X = [[6], [8], [10], [14], [18]]
y = [[7], [9], [13], [17.5], [18]]
plt.figure()
plt.title('Pizza price plotted against diameter')
plt.xlabel('Diameter in inches')
plt.ylabel('Price in dollars')
plt.plot(X, y, 'k.')
plt.axis([0, 25, 0, 25])
plt.grid(True)
plt.show()

Script di atas menghasilkan grafik berikut. Diameter dari pizza diplot pada sumbu x dan harga diplot pada sumbu y.
Kita dapat melihat dari grafik data pelatihan bahwa ada hubungan positif antara diameter pizza dan harganya, yang harus dikuatkan oleh pengalaman makan pizza kita sendiri. Ketika diameter pizza meningkat, harganya juga akan meningkat. Program prediktor harga pizza berikut memodelkan hubungan ini menggunakan regresi linier. Mari kita tinjau program berikut dan diskusikan cara kerja regresi linear:
import matplotlib.pyplot as plt
X = [[6], [8], [10], [14], [18]]
y = [[7], [9], [13], [17.5], [18]]
plt.figure()
plt.title('Pizza price plotted against diameter')
plt.xlabel('Diameter in inches')
plt.ylabel('Price in dollars')
plt.plot(X, y, 'k.')
plt.axis([0, 25, 0, 25])
plt.grid(True)
plt.show()

from sklearn.linear_model import LinearRegression
# Training data
X = [[6], [8], [10], [14], [18]]
y = [[7], [9], [13], [17.5], [18]]
# Create and fit the model
model = LinearRegression()
model.fit(X, y)
print 'A 12" pizza should cost: $%.2f' % model.predict([[12]])

Regresi linear sederhana mengasumsikan bahwa hubungan linear ada diantara variabel respon dan variabel explanatory; memodelkan hubungan ini dengan permukaan linier yang disebut hyperplane. Hyperplane adalah subruang yang memiliki satu dimensi lebih kecil dari ruang ambient yang memuatnya. Dalam regresi linier sederhana, ada satu dimensi untuk variabel respon dan dimensi lain untuk variabel explanatory, membuat total dua dimensi. Hyperplane regresi, oleh karena itu, memiliki satu dimensi; hyperplane dengan satu dimensi adalah garis.

Kelas sklearn.linear_model.LinearRegression adalah estimator. Estimator memprediksi nilai berdasarkan data yang diamati. Dalam scikit-learn, semua estimator menerapkan metode fit() dan predict(). Metode sebelumnya digunakan untuk mempelajari parameter model, dan metode yang terakhir digunakan untuk memprediksi nilai variabel respon untuk variabel explanatory menggunakan parameter yang dipelajari. Sangat mudah untuk bereksperimen dengan model yang berbeda menggunakan scikit-learn karena semua estimator menerapkan metode fit dan predict.

Metode fit LinearRegression mempelajari parameter dari model berikut untuk regresi linier sederhana:
y adalah nilai prediksi dari variabel respon; dalam contoh ini, harga pizza yang diprediksi. x adalah variabel explanatory. Intercept term 𝞪 dan koefisien 𝞫 adalah parameter dari model yang dipelajari oleh algoritma pembelajaran. Garis yang diplot dalam gambar berikut memodelkan hubungan antara ukuran pizza dan harganya. Dengan menggunakan model ini, kita akan mengharapkan harga pizza 8 inci menjadi sekitar $ 7,33, dan harga pizza 20 inci menjadi $ 18,75.
Menggunakan data latih untuk mempelajari nilai-nilai parameter pada regresi linier sederhana yang menghasilkan model pasangan terbaik disebut ordinary least squares atau linear least squares.

Mengevaluasi kesesuaian model dengan fungsi biaya (Cost Function)
Garis regresi yang dihasilkan oleh beberapa set nilai parameter diplot dalam gambar berikut. Bagaimana kita bisa menilai parameter mana yang menghasilkan garis regresi terbaik?
Fungsi biaya, juga disebut fungsi kerugian, digunakan untuk menentukan dan mengukur kesalahan suatu model. Perbedaan antara harga yang diprediksi oleh model dan harga yang diamati dari pizza dalam set pelatihan disebut residual atau kesalahan pelatihan. Kemudian, kami akan mengevaluasi model pada serangkaian data uji yang terpisah; perbedaan antara nilai prediksi dan yang teramati dalam data pengujian disebut kesalahan prediksi (prediciton error) atau kesalahan pengujian (test error).

Residu untuk model ditunjukkan oleh garis vertikal antara titik-titik untuk contoh pelatihan dan hyperplane regresi di plot berikut:
Kita dapat menghasilkan prediktor harga pizza terbaik dengan meminimalkan jumlah residual. Model kita cocok jika nilai yang diprediksinya untuk variabel respon mendekati nilai yang diamati untuk semua contoh pelatihan. Ukuran kebugaran model ini disebut sisa jumlah fungsi biaya kuadrat (sum of squares cost function). Secara formal, fungsi ini menilai kesesuaian suatu model dengan menjumlahkan residual kuadrat untuk semua contoh pelatihan kita. Jumlah kuadrat sisa dihitung dengan rumus dalam persamaan berikut, di mana yi adalah nilai yang diamati dan f(xi) adalah nilai prediksi:
Mari hitung jumlah sisa kuadrat untuk model kami dengan menambahkan dua baris berikut ke skrip sebelumnya:

import matplotlib.pyplot as plt
X = [[6], [8], [10], [14], [18]]
y = [[7], [9], [13], [17.5], [18]]
plt.figure()
plt.title('Pizza price plotted against diameter')
plt.xlabel('Diameter in inches')
plt.ylabel('Price in dollars')
plt.plot(X, y, 'k.')
plt.axis([0, 25, 0, 25])
plt.grid(True)
plt.show()

from sklearn.linear_model import LinearRegression
# Training data
X = [[6], [8], [10], [14], [18]]
y = [[7], [9], [13], [17.5], [18]]
# Create and fit the model
model = LinearRegression()
model.fit(X, y)
print 'A 12" pizza should cost: $%.2f' % model.predict([[18]])

import numpy as np
print 'Residual sum of squares: %.2f' % np.mean((model.predict(X)- y) ** 2)
Sekarang kita memiliki fungsi biaya (cost function), kita dapat menemukan nilai-nilai parameter model yang menguranginya.

Memecahkan kuadrat terkecil biasa (Ordinary Least Square) untuk regresi linier sederhana
Pada bagian ini, kita akan bekerja melalui pemecahan kuadrat terkecil biasa untuk regresi linier sederhana. Ingat bahwa regresi linier sederhana diberikan oleh persamaan berikut:
Juga, ingat bahwa tujuan kita adalah untuk memecahkan nilai-nilai dari 𝞫 dan 𝞪 yang meminimalkan fungsi biaya. Kita akan memecahkan 𝞫 dulu. Untuk melakukannya, kita akan menghitung varians x dan covariance x dan y.

Varians adalah ukuran seberapa jauh satu set nilai tersebar. Jika semua angka dalam set sama, varians dari himpunan adalah nol. Sebuah varians kecil menunjukkan bahwa angka-angka mendekati mean dari set, sementara satu set yang mengandung angka yang jauh dari mean dan satu sama lain akan memiliki varians yang besar. Varians dapat dihitung menggunakan persamaan berikut:
Pada persamaan sebelumnya, x-mean (x ada garis di atasnya) adalah nilai rata-rata x, xi adalah nilai x untuk instance pelatihan ke-i, dan n adalah jumlah instance pelatihan. Mari menghitung varians diameter pizza di set pelatihan kita:
from __future__ import division
xbar = (6 + 8 + 10 + 14 + 18) / 5
variance = ((6 - xbar)**2 + (8 - xbar)**2 + (10 - xbar)**2 + (14 - xbar)**2 + (18 - xbar)**2) / 4
print variance
NumPy juga menyediakan metode var untuk menghitung varians. Parameter kata kunci ddof dapat digunakan untuk mengatur koreksi Bessel untuk menghitung varians sampel:
Kovarian adalah ukuran dari seberapa banyak dua variabel berubah bersama. Jika nilai dari variabel meningkat bersama-sama, kovarian mereka positif. Jika satu variabel cenderung meningkat sementara yang lain menurun, kovarian mereka negatif. Jika tidak ada hubungan linear antara dua variabel, maka kovariannya akan sama dengan nol; variabel tidak linier berkorelasi tetapi tidak selalu independen. Kovarian dapat dihitung menggunakan rumus berikut:
Seperti halnya varians, xi adalah diameter dari contoh pelatihan ke-i, x adalah mean dari diameter, y adalah mean dari harga, yi adalah harga dari instance pelatihan ke-i, dan n adalah jumlah instance pelatihan. Mari kita menghitung kovarians diameter dan harga pizza dalam set pelatihan:
xbar = (6 + 8 + 10 + 14 + 18) / 5
ybar = (7 + 9 + 13 + 17.5 + 18) / 5
cov = ((6 - xbar) * (7 - ybar) + (8 - xbar) * (9 - ybar) + (10 - xbar) * (13 - ybar) + (14 - xbar) * (17.5 - ybar) + (18 - xbar) * (18 - ybar)) / 4
print cov

import numpy as np
print np.cov([6, 8, 10, 14, 18], [7, 9, 13, 17.5, 18])[0][1]
Sekarang kita telah menghitung varians dari variabel explanatory dan kovarians dari variabel respon dan variabel explanatory, kita dapat memecahkan 𝛽 menggunakan rumus berikut:
Setelah 𝛽 dipecahkan, kita bisa menyelesaikan 𝞪 menggunakan rumus berikut:
Dalam rumus sebelumnya, y-mean (y di atasnya ada garis) adalah rata-rata y dan x-mean (x di atasnya ada garis) adalah rerata x.(x-mean, y-mean) adalah koordinat dari pusat massa, titik yang harus dilalui oleh model. Kita dapat menggunakan centroid dan nilai 𝛽 untuk memecahkan 𝞪 sebagai berikut:

yrerata = ybar = (7 + 9 + 13 + 17.5 + 18) / 5 = 12.9
𝛽  = 0.976293103448276
xrerata = xbar = (6 + 8 + 10 + 14 + 18) / 5 = 11.2

jadi:
Sekarang kita telah memecahkan nilai-nilai parameter model yang meminimalkan fungsi biaya, kita dapat menghubungkan diameter pizza dan memprediksi harganya. Misalnya, pizza 11 inci diperkirakan berharga sekitar $ 12,70, dan pizza 18 inci diperkirakan berharga sekitar $ 19,54. Selamat! Anda menggunakan regresi linier sederhana untuk memprediksi harga pizza.

Alpha Beta x (Diameter pizza) Harga Prediksi = Alpha + (Beta * x)
1.96551724137931 0.976293103448276 11 12.7047413793103
1.96551724137931 0.976293103448276 12 13.6810344827586
1.96551724137931 0.976293103448276 15 16.6099137931034
1.96551724137931 0.976293103448276 18 19.5387931034483
1.96551724137931 0.976293103448276 21 22.4676724137931

Mengevaluasi Model
Kami telah menggunakan algoritma pembelajaran untuk memperkirakan parameter model dari data pelatihan. Bagaimana kita bisa menilai apakah model kita mewakili dengan baik dari hubungan yang sebenarnya? Mari kita berasumsi bahwa Anda telah menemukan halaman lain dalam jurnal pizza Anda. Kami akan menggunakan entri di halaman ini sebagai tes yang ditetapkan untuk mengukur kinerja model:
Beberapa ukuran dapat digunakan untuk menilai kemampuan prediksi model kami. Kami akan mengevaluasi prediksi harga pizza menggunakan r-squared. R-Squared mengukur seberapa baik nilai-nilai yang diamati dari variabel respon diprediksi oleh model. Lebih konkret, r-squared adalah proporsi dari varians dalam variabel respon yang dijelaskan oleh model. Skor r-squared dari satu menunjukkan bahwa variabel respon dapat diprediksi tanpa kesalahan menggunakan model. Skor r-squared dari satu setengah menunjukkan bahwa setengah dari varians dalam variabel respon dapat diprediksi menggunakan model. Ada beberapa metode untuk menghitung r-squaed. Dalam kasus regresi linier sederhana, r-squared sama dengan kuadrat koefisien korelasi momen produk Pearson, atau Pearson's r

Dengan menggunakan metode ini, r-kuadrat harus berupa bilangan positif antara nol dan satu. Metode ini intuitif; jika r-squared menjelaskan proporsi varians dalam variabel respon yang dijelaskan oleh model, itu tidak boleh lebih besar dari satu atau kurang dari nol. Metode lain, termasuk metode yang digunakan oleh scikit-learn, tidak menghitung r-squared sebagai kuadrat r Pearson, dan dapat mengembalikan r-squared negatif jika model berkinerja sangat buruk. Kami akan mengikuti metode yang digunakan oleh scikit-learn untuk menghitung r-squared untuk prediksi harga pizza kami.

Pertama, kita harus mengukur jumlah total kuadrat. yi adalah nilai yang diamati dari variabel respon untuk instance pengujian ke-i, dan ymean (y diatasnya ada tanda garis) adalah mean dari nilai-nilai yang teramati dari variabel respon:

Selanjutnya, kita harus menemukan jumlah sisa kuadrat. Ingat bahwa ini juga cost function kita.
Akhirnya, kita dapat menemukan r-squared menggunakan rumus berikut:
Skor r-squared sebesar 0,6620 menunjukkan bahwa sebagian besar varians dalam harga contoh tes yang telah dijelaskan oleh model. Sekarang, mari kita konfirmasikan perhitungan kita menggunakan scikit-learn. Metode skor LinearRegression mengembalikan nilai r-squared model, seperti yang terlihat pada contoh berikut:

from sklearn.linear_model import LinearRegression
X = [[6], [8], [10], [14], [18]]
y = [[7], [9], [13], [17.5], [18]]
X_test = [[8], [9], [11], [16], [12]]
y_test = [[11], [8.5], [15], [18], [11]]
model = LinearRegression()
model.fit(X, y)
print 'R-squared: %.4f' % model.score(X_test, y_test)

---!!! SEMOGA BISA BERMANFAAT !!!----

Thursday, May 10, 2018

CRUD Dengan CodeIgniter

Code Igniter adalah salah satu framework PHP yang mudah untuk dipelajari. Sebagaimana umumnya frame PHP mengacu pada arsitektur MVC (Model, View dan Controller). Secara singkat Model berhubungan dengan manipulasi database, View berhubungan dengan tampilan, dan Controller berhubungan dengan arus data menuju dan dari model ke view atau sebaliknya.

1. Persiapan Environment (Hello World...)

Berikut ini tutorial singkat dan sederhana mengenai Create, Retrieve, Update dan Delete atau dikenal dengan istilah CRUD pada pada framework PHP Code Igniter.

Download XAMPP di https://www.apachefriends.org/download.html, kemudian instal XAMPP di komputer kalian.

Sebelumnya buat folder baru bernama crud di folder ..XAMPP\htdocs\crud
Selanjutnya download CodeIgniter (di singkat CI) di https://codeigniter.com/download. Kemudian ektrak file CI CodeIgniter-3.1.8.zip (nama file tidak harus sama) ke crud yang sebelumnya telah dibuat, seperti berikut ini:
Setting base_url codeigniter sesuai dengan nama projek (disini yaitu crud) menjadi 'http://localhost/crud' dengan cara buka file application/config/config.php seperti berikut
$config['base_url'] = 'http://localhost/crud/';
Sekarang memilih template website untuk dipakai sebagai casing atau baju website. Setelah cari-cari saya menemukan beberapa dashboard template gratis di sini https://parameter.io/free-bootstrap-admin-templates/. Dan akhirnya saya memilih AdminBSB – Material Design yang dapat didownload di https://github.com/gurayyarar/AdminBSBMaterialDesign. Setelah itu uraikan file zip AdminBSBMaterialDesign-master.zip
Ubah  file index.html menjadi dashboard.php yang nanti akan dipanggil di bagian controller.
Copykan beberapa file ke xampp/htdocs/application/views seperti berikut ini:
Edit file xampp/htdocs/crud/application/config/routes.php dan ganti default controller menjadi :
$route['default_controller'] = 'dashboardku';
Kemudian kita buat controller baru bernama 'dashboardku' yang akan dipanggil secara default. Kemudian simpan file controller Dashboardku.php ke folder xampp/htdocs/crud/application/controllers/Dashboardku.php.

Sebagai catatan nama class harus diawali dengan huruf besar, nama file controller juga harus diawali dengan huruf besar.

defined('BASEPATH') OR exit('No direct script access allowed');

// Nama class berawalan huruf besar
// Nama file controller harus berawalan huruf besar
class Dashboardku extends CI_Controller {
public function index()
{
// Memanggil view dashboard.php
$this->load->view('dashboard');
}
}
sekarang buka websitenya http://localhost/crud/, maka akan tampak banyak kerusakan link yang perlu disesuaikan alamat urlnya.
Konfigurasi file xampp/htdocs/crud/application/config/autoload.php seperti ini
$autoload['helper'] = array('url', 'file');
Pindahkan beberapa folder yang terletak di xampp/htdocs/crud/application/views/ berikut ini css, documentation, images, js, pages, plugins, scss
ke folder xampp/htdocs/crud/
Sesuaikan semua link referensi pada xampp/htdocs/crud/application/views/dashboard.php seperti berikut ini
....
<!-- Bootstrap Core Css -->
    <link href="<?=base_url('plugins/bootstrap/css/bootstrap.css');?>" rel="stylesheet">

    <!-- Waves Effect Css -->
    <link href="<?=base_url('plugins/node-waves/waves.css');?>" rel="stylesheet" />

    <!-- Animation Css -->
    <link href="<?=base_url('plugins/animate-css/animate.css');?>" rel="stylesheet" />

    <!-- Morris Chart Css-->
    <link href="<?=base_url('plugins/morrisjs/morris.css');?>" rel="stylesheet" />

    <!-- Custom Css -->
    <link href="<?=base_url('css/style.css');?>" rel="stylesheet">

    <!-- AdminBSB Themes. You can choose a theme from css/themes instead of get all themes -->
    <link href="<?=base_url('css/themes/all-themes.css');?>" rel="stylesheet" />
....
....
    <!-- Jquery Core Js -->
    <script src="<?=base_url('plugins/jquery/jquery.min.js');?>"></script>

    <!-- Bootstrap Core Js -->
    <script src="<?=base_url('plugins/bootstrap/js/bootstrap.js');?>"></script>

    <!-- Select Plugin Js -->
    <script src="<?=base_url('plugins/bootstrap-select/js/bootstrap-select.js');?>"></script>

    <!-- Slimscroll Plugin Js -->
    <script src="<?=base_url('plugins/jquery-slimscroll/jquery.slimscroll.js');?>"></script>

    <!-- Waves Effect Plugin Js -->
    <script src="<?=base_url('plugins/node-waves/waves.js');?>"></script>

    <!-- Jquery CountTo Plugin Js -->
    <script src="<?=base_url('plugins/jquery-countto/jquery.countTo.js');?>"></script>

    <!-- Morris Plugin Js -->
    <script src="<?=base_url('plugins/raphael/raphael.min.js');?>"></script>
    <script src="<?=base_url('plugins/morrisjs/morris.js');?>"></script>

    <!-- ChartJs -->
    <script src="<?=base_url('plugins/chartjs/Chart.bundle.js');?>"></script>

    <!-- Flot Charts Plugin Js -->
    <script src="<?=base_url('plugins/flot-charts/jquery.flot.js');?>"></script>
    <script src="<?=base_url('plugins/flot-charts/jquery.flot.resize.js');?>"></script>
    <script src="<?=base_url('plugins/flot-charts/jquery.flot.pie.js');?>"></script>
    <script src="<?=base_url('plugins/flot-charts/jquery.flot.categories.js');?>"></script>
    <script src="<?=base_url('plugins/flot-charts/jquery.flot.time.js');?>"></script>

    <!-- Sparkline Chart Plugin Js -->
    <script src="<?=base_url('plugins/jquery-sparkline/jquery.sparkline.js');?>"></script>

    <!-- Custom Js -->
    <script src="<?=base_url('js/admin.js');?>"></script>
    <script src="<?=base_url('js/pages/index.js');?>"></script>

    <!-- Demo Js -->
    <script src="<?=base_url('js/demo.js');?>"></script>
Jika tidak ada kendala maka http://localhost/crud akan tampak seperti berikut ini:
Selanjutnya kalian tinggal meng-copy template tersebut untuk keperluan halaman yang lain.
Selamat kalian telah bisa membuat view di dalam CI.

Namun jika kalian masih gagal juga maka silahkan download crud.7z dan uraikan di folder htdocs. file tersebut merupakan hasil akhir dari diskusi di atas. Kalian bisa langsung menggunakannya meskipun belum masuk ke pembahasan Database.
---------------------------------------------------------------------
  Download di sini ya ....KLIK ME
---------------------------------------------------------------------


2. Menghilangkan URI index.php pada CI dan Slicing

Kita ketahui bahwa sistem pengalamatan URL CI selalui disertai dengan index.php yang terasa kurang nyaman dilihat. Untuk menghilangkannya, buatlah file baru bernama .htaccess tanpa disertai extension apa-apa ya....dimana kodingnya adalah sebagai berikut:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

by the way....

Pada contoh view dashboard sebelumnya adalah contoh view satu halaman penuh, artinya untuk membuat view yang lain kalian harus mengcopy semua view dashboard. Kelemahannya adalah jika ada perubahan pada menu navigasi dan menu top maka kalian harus mengubah semua view yang ada. Hal ini tentu sangat merepotkan.

Oleh karena itu untuk menghemat sumberdaya kita perlu melakukan slicing terhadap view. Dimana untuk men-slicing halaman view kalian harus memahami karaktersitik setiap template view, karena setiap template website memiliki model yang berbeda.

Dari contoh template sebelumnya saya putuskan slicing menjadi 3 yaitu halaman top, halaman navigator dan halaman body (body bisa diber nama lain sesuai kebutuhan). Seperti ilustrasi berikut

Sehingga contoh pemanggilan view pada controller adalah sebagai berikut (berlaku untuk semuanya):
public function index()
{
$data['menudashboard'] = "";
$data['menudatamaster'] = "active";
$data['menudatamastersiswa'] = "active";
$data['siswa'] = $this->SiswaModel->retrieve_all();

// Hasil slicing, terdapat 3 bagian
$this->load->view('top'); // view top
$this->load->view('navigator', $data); // view navigator
$this->load->view('siswa'); // view yang dibutuhkan, perubahan hanya di view ini saja
}

3. Manipulasi Database
Sebelum masuk ke database, lakukan konfigurasi sebagai berikut:

Konfigurasi file xampp/htddocs/crud/application/config/autoload.php
$autoload['libraries'] = array('database');

Konfigurasi file xampp/htddocs/crud/application/config/database.php
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'crud',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);

Selanjutnya kita membuat database bernama crud dan satu table sederhana bernama siswa_tb melalui phpmyadmin


CREATE TABLE siswa_tb (
  nis char(6) NOT NULL,
  nama varchar(35) NOT NULL,
  alamat text NOT NULL,
  tgl_lahir date NOT NULL,
  jenis_kelamin varchar(15) NOT NULL,
  telp varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Ok karena capek nulis, langsung saja download contoh jadi CRUD di link berikut: https://drive.google.com/open?id=1o5Z1dn23y0NnDSJvnd6122TbpJ49dyKd

Dan berikut ini contoh hasilnya:


Kalau ada yang ditanyakan siahkan comment di bawah.

Sunday, May 6, 2018

Memanfaatkan Google Colaboratory dan Google Drive

Bagi kalian yang belajar machine learning dan memiliki keterbatasan sumberdaya maka berikut ini solusi yang menarik dari google. Dimana Google bersedia berbagi GPU Tesla K80 dan RAM yang memadai untuk pengembangan Deep Learning gratis.

Google colabs menyediakan lingkungan pengembangan AI (artificial intellegence) yang didukung oleh pre install lengkap. Hampir semua library pendukung pengembangan seperti python, scikit, keras, numpy, matplotlib, dan lain-lain semua tersedia. Anda tinggal menginstall komponen apa saja yang dibutuhkan dalam pengembangan software yang sedang dibangun, jadi Anda cukup fokus pada AI nya saja.

Di dalam google colaboratoty, secara hard code digunakan jupyter notebook, jadi proses instalasi, coding dan lain-lain menggunakan interface jupyter notebooks.

Yang menarik mode penyimpanan file tidak selalu terikat dengan Google Cloud karena file program dan data dapat dialihkan ke Google Drive kita, sehingga lebih mudah dalam membuat struktur penyimpanannya.

Baiklah berikut ini langkah-langka Google Colaboratory dengan penyimpanan berada di Google Drive:

1. Buat folder baru di Google Drive dengan nama 'Belajar'

2. Buat file Colaboratory baru dengan klik kanan > pilih menu Lainnya > Colaboratory

3. Selanjutnya akan terbentuk file colaboratory baru, rename menjadi SettingAwal.ipynb dan atur python versi 3 dan mode GPU dengan klik menu Edit > Notebook Settings
4. Selanjutnya akan dilakukan konfigurasi seperti berikut ini, nanti kita disuruh memasukkan kode API yang meminta izin akses ke google drive.
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

5. Lakukan mounting ke google drive
!mkdir -p drive
!google-drive-ocamlfuse drive
6. Mengubah folder aktif ke google drive
import os
os.chdir("drive/Belajar")
7. Untuk mengetahui apakah lokasi folder colab sudah merujuk ke google drive kita, lakukan perintah:
!ls

8. Kita cek sumberdaya apa yang kita miliki:
import tensorflow as tf
tf.test.gpu_device_name()

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

9. Mengecek RAM
!cat /proc/meminfo

10. Mengecek CPU
!cat /proc/cpuinfo

Gunakan perintah !pip3 list untuk melihat paket yang terinstal dalam colab:


---- !!! Selesai sekarang sudah memiliki komputer handal untuk dibuat research !!!---

Contoh download dataset dari git:
!wget https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/datasets/Titanic.csv -P drive/Belajar
Contoh membaca baris data dengan panda:
import pandas as pd
titanic = pd.read_csv(“drive/Belajar/Titanic.csv”)
titanic.head(5)
Contoh clone dari git, yang akan ter-copy ke google drive kita:
!git clone https://github.com/wxs/keras-mnist-tutorial.git
Contoh install package:
1. Keras
!pip install -q keras
import keras
2. PyTorch
!pip install -q http://download.pytorch.org/whl/cu75/torch-0.2.0.post3-cp27-cp27mu-manylinux1_x86_64.whl torchvision
import torch
3. OpenCV
!apt-get -qq install -y libsm6 libxext6 && pip install -q -U opencv-python

import cv2