Selamat Datang di blog sederhana saya,Semoga apa yang Kalian Inginkan dapat terpenuhi disini.

Contoh Perhitungan Algoritma Learning Vector Quantization

Melanjutkan tulisan saya tentang algoritma Learning Vector Quantization yang lalu, kali ini saya akan melanjutkan dengan contoh perhitungan manual. Berikut ini contoh data yang akan kita hitung.

No
X1

X2

X3

X4

target
1
0
1
1
0
0
2
0
0
1
1
1
3
1
1
1
1
0
4
1
0
0
1
1

pada contoh di atas, saya menggunakan 4 data sebagai data training beserta target yang bertujuan untuk mendapatkan bobot yang akan digunakan pada proses klasifikasi. Bobot awal adalah { 1, 1, 1, 0} dan { 1, 0, 1, 1} dengan learning rate 0,05 dengan fungsi pembelajaran = 0,1.

Pelatihan

Iterasi ke 1

1. Data ke 1 { 0, 1, 1, 0} dengan target 0, bobot = {{ 1, 1, 1, 0},{ 1, 0, 1, 1}}
     - menghitung bobot untuk masing masing output : 
        kelas 0 = sqrt(((0-1)^2)+((1-1)^2)+((1-1)^2)+((0-0)^2)) = 1
        kelas 1 = sqrt(((0-1)^2)+((1-0)^2)+((1-1)^2)+((0-1)^2)) = 1.7320508075689
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 0
     - update bobot : 
       karena target 0 sama dengan output 0, maka update bobot : 
       W11 = 1 + (0.05*(0 - 1)) = 0.95
       W12 = 1 + (0.05*(1 - 1)) = 1
       W13 = 1 + (0.05*(1 - 1)) = 1
       W14 = 0 + (0.05*(0 - 0)) = 0
     
      maka diperoleh bobot baru = {{ 0.95, 1, 1, 0},{ 1, 0, 1, 1}} untuk digunakan pada perhitungan            data selanjutnya

2. Data ke 2 { 0, 0, 1, 1} dengan target 1, bobot = {{ 0.95, 1, 1, 0},{ 1, 0, 1, 1}}
    - menghitung bobot untuk masing masing output :
        kelas 0 = sqrt(((0-0.95)^2)+((0-1)^2)+((1-1)^2)+((1-0)^2)) = 1.7036725037401
        kelas 1 = sqrt(((0-1)^2)+((0-0)^2)+((1-1)^2)+((1-1)^2)) = 1
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 1
     - update bobot : 
       karena target 1 sama dengan output 1, maka update bobot : 
       W21 = 1 + (0.05*(0 - 1)) = 0.95
       W22 = 0 + (0.05*(0 - 0)) = 0 
       W23 = 1 + (0.05*(1 - 1)) = 1
       W24 = 1 + (0.05*(1 - 1)) = 1
      
       maka diperoleh bobot baru = {{ 0.95, 1, 1, 0},{ 0.95, 0, 1, 1}} untuk digunakan pada perhitungan data selanjutnya

3. Data ke 3 { 1, 1, 1, 1} dengan target 0, bobot = {{ 0.95, 1, 1, 0},{ 0.95, 0, 1, 1}}
    - menghitung bobot untuk masing masing output :
        kelas 0 = sqrt(((1-0.95)^2)+((1-1)^2)+((1-1)^2)+((1-0)^2)) = 1.001249219725
        kelas 1 = sqrt(((1-0.95)^2)+((1-0)^2)+((1-1)^2)+((1-1)^2)) = 1.001249219725
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 0, 
       - karena output antara kedua kelas sama besar, bisa dipilih salah satu sebagai output
     - update bobot : 
       karena target 0 sama dengan output 0, maka update bobot : 
       W11 = 0.95 + (0.05*(1 - 0.95)) = 0.9525
       W12 = 1 + (0.05*(1 - 1)) = 1
       W13 = 1 + (0.05*(1 - 1)) = 1
       W14 = 0 + (0.05*(1 - 0)) = 0.05
      
     maka diperoleh bobot baru = {{ 0.9525, 1, 1, 0.05},{ 0.95, 0, 1, 1}} untuk digunakan pada perhitungan data selanjutnya

4. Data ke 4 { 1, 0, 0, 1} dengan target 1, bobot = {{ 0.9525, 1, 1, 0.05},{ 0.95, 0, 1, 1}}
    - menghitung bobot untuk masing masing output :
        kelas 0 = sqrt(((1-0.9525)^2)+((0-1)^2)+((0-1)^2)+((1-0.05)^2)) = 1.7043345475581
        kelas 1 = sqrt(((1-0.95)^2)+((0-0)^2)+((0-1)^2)+((1-1)^2)) = 1.001249219725
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 1
     - update bobot : 
       karena target 1 sama dengan output 1, maka update bobot : 
       W21 = 0.95 + (0.05*(1 - 0.95)) = 0.9525
       W22 = 0 + (0.05*(0 - 0)) = 0
       W23 = 1 + (0.05*(0 - 1)) = 0.95
       W24 = 1 + (0.05*(1 - 1)) = 1

      maka diperoleh bobot baru = {{ 0.9525, 1, 1, 0.05},{ 0.9525, 0, 0.95, 1}} untuk digunakan pada perhitungan data selanjutnya

- setelah semua data selesai dihitung, update learning rate : 
    learning rate baru = fungsi pembelajaran * learning rate;
                                 = 0.1 * 0.05 = 0.005
karena dalam satu iterasi semua data sudah diklasifikasikan dengan benar, maka iterasi pelatihan bisa dihentikan dan memakai bobot terakhir untuk digunakan dalam proses klasifikasi / prediksi. Jika dalam satu iterasi ada yang outputnya belum tepat, maka dilanjutkan ke iterasi berikutnya sampai dengan data diklasifikasikan dengan benar atau telah mencapai maksimal iterasi yang telah ditentukan.

Klasifikasi / Prediksi

Setelah didapat bobot hasil pelatihan yaitu {{ 0.9525, 1, 1, 0.05},{ 0.9525, 0, 0.95, 1}}, maka kita coba melakukan uji coba klasifikasi terhadap dua data yaitu { 1, 1, 1, 0} dan { 1, 0, 1, 1}.

1. Data ke 1 { 1, 1, 1, 0}

kelas 0 = sqrt(((1-0.9525)^2)+((1-1)^2)+((1-1)^2)+((0-0.05)^2)) = 0.068965571120669
kelas 1 = sqrt(((1-0.9525)^2)+((1-0)^2)+((1-0.95)^2)+((0-1)^2)) = 1.4158941521173
output = kelas 0

2. Data ke 2 { 1, 0, 1, 1}

kelas 0 = sqrt(((1-0.9525)^2)+((0-1)^2)+((1-1)^2)+((1-0.05)^2)) = 1.3801290700511
kelas 1 = sqrt(((1-0.9525)^2)+((0-0)^2)+((1-0.95)^2)+((1-1)^2)) = 0.068965571120669
output = kelas 1

Sekian tulisan saya kali ini, semoga bermanfaat.
Share:

Fungsi number_format php di javascript

      Fungsi number_format pada php biasanya digunakan untuk membuat angka menjadi format yang lebih enak dibaca seperti contoh berikut.


5000000   => 5.000.000    // number_format(5000000,0,',','.');
5000000 => 5.000.000,00 // number_format(5000000,2,',','.')

seperti terlihat pada contoh di atas, number_format digunakan untuk merubah format angka menjadi lebih mudah dibaca pada bahasa pemrograman php. Lalu bagaimana jika ingin menggunakan fungsi number_format pada javascript ? berikut saya bagikan fungsi membuat number_format pada bahasa pemrograman javascript yang saya dapat dari halaman github.

function number_format (number, decimals, decPoint, thousandsSep) { 
number = (number + '').replace(/[^0-9+\-Ee.]/g, '')
var n = !isFinite(+number) ? 0 : +number
var prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
var sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep
var dec = (typeof decPoint === 'undefined') ? '.' : decPoint
var s = ''

var toFixedFix = function (n, prec) {
var k = Math.pow(10, prec)
return '' + (Math.round(n * k) / k)
.toFixed(prec)
}

// @todo: for IE parseFloat(0.55).toFixed(0) = 0;
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep)
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || ''
s[1] += new Array(prec - s[1].length + 1).join('0')
}

return s.join(dec)
}

penggunaan fungsi tersebut sama seperti di php, seperti berikut.


number_format(5000000);

cukup sekian tulisan saya kali ini, semoga bermanfaat.
Share:

Membuka port firewall di Centos / RHEL

      distro Linux seperti CentOS atau RHEL dilengkapi dengan firewall bawaan yang powerful dengan aturan firewall default yang cukup ketat. Jadi, jika Anda menginstal layanan kustom apa pun (misalnya, server web, NFS, Samba), kemungkinan lalu lintasnya akan diblokir oleh aturan firewall. Anda perlu membuka port yang diperlukan di firewall untuk mengizinkan lalu lintas.
      Pada CentOS / RHEL 6 atau sebelumnya, layanan iptables memungkinkan pengguna berinteraksi dengan modul kernel netfilter untuk mengkonfigurasi aturan firewall di sisi pengguna. Dimulai dengan CentOS / RHEL 7, antarmuka pengguna baru yang disebut firewalld telah diperkenalkan untuk menggantikan layanan iptables.

Untuk memeriksa aturan firewall saat ini, gunakan perintah ini:

sudo iptables -L
Sekarang mari kita coba mengupdate firewall untuk membuka port di CentOS / RHEL.

Membuka port di Centos 7

      Dimulai dengan CentOS dan RHEL 7, pengaturan firewall rule dikelola oleh layanan firewall daemon. Syntax command-line yang digunakan adalah firewall-cmd untuk memperbarui peraturan firewall secara permanen. Contoh, kita akan membuka port 80 maka perintah yang digunakan sebagai berikut.


$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
$ sudo firewall-cmd --reload
tanpa tag "--permanent", maka pengaturan akan hilang ketika komputer di restart. Kemudian cek rule terbaru.


$ firewall-cmd --list-all 

Membuka port di Centos 6

      Pada Centos 6 atau yang terdahulu, untuk mengkonfigurasi firewall menggunakan service iptables.
 
$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo service iptables save
perintah pertama adalah perintah untuk menambahkan port 80 ke dalam list service iptables. Sedangkan perintah kedua untuk menyimpan secara permanen perubahan yang telah dilakukan. 

Sekian dulu catatan saya kali ini, semoga bermanfaat.
Share:

Pemrograman Berorientasi Object - Overloading dan Overriding

       Function atau method overloading dan override adalah fitur yang sangat mendasar dan berguna dari bahasa OOP manapun. Dalam tutorial ini kita akan membahas implementasi metode overloading dan override di php. Di sini pertama kita akan membahas dasar-dasar overloading dan override. Setelah eksplorasi dasar kita akan menerapkan overloading dan override di php. Sebelum melangkah lebih jauh, saya mengasumsikan bahwa Anda memiliki pengetahuan dasar tentang class dan pewarisan di php. Anda juga memiliki pemahaman tentang magic method di php. Magic method karena overloading di php bisa di implmentasikan dengan menggunakan magic method.

Overriding

       Arti dasar dari overriding di OOP sama dengan arti kata sebenarnya. Dalam arti kata sebenarnya dari overriding adalah menggantikan perilaku orang tua yang sama pada anak. Ini sama dengan override method di OOP. Dalam arti OOP, override adalah mengganti method class induk di class anak. Atau dengan method kata kunci sederhana yang mengesampingkan berarti mengubah perilaku metode ini. Dalam OOP overriding adalah proses dimana Anda dapat mendeklarasikan ulang method class induk Anda di class anak. Jadi arti dasar override OOP adalah mengubah perilaku method class induk Anda.

       Biasanya method override diperlukan saat class parent / induk Anda memiliki beberapa method, namun di class anak Anda Anda menginginkan method yang sama dengan perilaku yang berbeda. Dengan meng-override method Anda dapat menyelesaikan perubahan perilakunya dari class induk. Untuk implementasi overiding di OOP kita umumnya membuat method yang sama di class anak.

Overloading

      Overloading di OOP sama dengan overloading di dunia nyata. Di dunia nyata, overloading berarti memberi pekerjaan ekstra pada mesin atau orang yang sama. Method overloading id OOP sama. Dengan proses methos overloading Anda meminta method / function Anda untuk beberapa pekerjaan ekstra. Atau dalam beberapa kasus, kita bisa mengatakan beberapa pekerjaan yang berbeda juga.

      Biasanya method overloading di OOP dikelola berdasarkan argumen / parameter yang dilewatkan dalam function. Kita bisa mencapai overloading di OOP dengan memberikan argumen yang berbeda dalam method / function yang sama.

Overiding dan Overloading di PHP

      Implementasi override di php sangat mudah. Jika class induk Anda memiliki fungsi, nda dapat membuat fungsi dengan nama yang sama di class anak Anda untuk mengganti fungsinya. Implementasi override tidak bisa diraih dengan membuat 2 function dengan nama yang sama dan argumen / parameter yang berbeda dalam php. Karena kita tidak bisa membuat function nama yang sama lebih dari 1 kali di class php. Untuk menerapkan overloading kita perlu bantuan metode magic di php. Di bagian bawah kita akan membahas overloading dan override satu per satu.

Overloading di PHP

      Seperti kita ketahui bahwa kita tidak bisa menerapkan overloading dengan membuat 2 fungsi dengan nama yang sama dalam satu class. Jadi untuk menerapkan overloading di php kita akan mengambil bantuan magic method __call(). magic method __call() dipanggil saat metode yang disebut dengan objek kelas tidak tersedia di class. Jadi di sini kita tidak akan membuat method dengan tepat dan akan membantu metode __call(). Sekarang method __call() akan memberi kita 2 argumen / parameter, parameter pertama adalah function / method yang akan dipanggil dan parameter kedua adalah parameter yang akan dikirim ke method yang dipanggil. Sekarang dengan bantuan switch-case atau if-else kita akan menerapkan overloading di php. Berikut adalah contoh overloading yang sangat sederhana di php.


<?php 
class Test
{
public function __construct()
{
//Your logic for constructor
}
public function __call($method_name , $parameter)
{
if($method_name == "overlodedFunction") //Function overloading logic for function name overlodedFunction
{
$count = count($parameter);
switch($count)
{
case "1":
//Business log in case of overlodedFunction function has 1 argument
echo "You are passing 1 argument";
break;
case "2": //Incase of 2 parameter
echo "You are passing 2 parameter";
break;
default:
throw new exception("Bad argument");
}
}
else
{
throw new exception("Function $method_name does not exists ");
}
}
}
$a = new Test();
$a->overlodedFunction("ankur");
$a->overlodedFunction("techflirt" , "ankur");
?>

        Seperti yang kita tahu bahwa magic method __call() dipanggil saat metode tidak tersedia di class. Jadi dalam kasus contoh test class di atas kita belum membuat function overlodedFunction. Jadi kapanpun metode overlodedFunction disebut, maka akan memanggil method __call(). Method __call() mempunyai 2 parameter, parameter pertama adalah nama dari method yang akan dijalankan dan lainnya adalah parameter yang dilewatkan dalam method yang disebut. Dalam fungsi __call() saya telah menerapkan if-else untuk memastikan bahwa logika bisnis overloading hanya berfungsi untuk fungsi overlodedFunction.

Overriding di PHP

       Override di php sangat mudah. Seperti yang kita ketahui bahwa override adalah proses memodifikasi method yang diwariskan. Jadi dalam kasus pewarisan, anda hanya perlu membuat method dengan nama yang sama di class anak yang ingin ditimpa. Berikut ini adalah contoh override method di php.


<?php 
class testParent
{
public function f1()
{
echo 1;
}
public function f2()
{
echo 2;
}
}

class testChild
{
function f2($a) //overriding function f2
{
echo $a;
}
}

$a = new testChild();
$a->f2('ankur');//it will print ankur
?>

      Pada contoh di atas Anda mengoverride fungsi f2. ketika melakukan override, anda bebas mengubah logika bisnis dan jumlah parameter.

Sekian tulisan saya kali ini, saya harap tulisan saya tentang konsep overloading dan override di php ini dapat bermanfaat untuk pembaca. Terima kasih.
Share:
  • ()
  • ()
Show more

Halaman