Saturday, February 22, 2020

Buku Belajar Machine Learning dengan Matlab - Regresi Linear Berganda

Buku Belajar Machine Learning dengan Matlab - Regresi Linear Berganda

Sinopsis

Setelah kalian belajar mengenai regresi linear sederhana disini,  Kita lanjut lagi mengenai analisis regresi berganda yang cukup rumit perhitungannya dengan persamaan umum yaitu

$$y=a+b_1x_1+b_2x_2... +b_nx_n$$
atau dalam persamaan umum yang lainya menjadi
$$Y=\beta_0+\beta_1X_1+\beta_2X_2+...+\beta_nX_n$$

Karena cukup rumit, contoh kasusnya yaitu 2 variabel saja yaitu \(X_1\) dan \(X_2\), maka untuk perhitungan regresi berganda yaitu

Metode 1

jika \(X\) dan \(Y\) adalah data-data vektor/array, maka
\(x = X -X\prime\)
\(y = Y -Y\prime\)
dengan \(X\prime\) dan \(Y\prime\) adalah rerata


\begin{equation}
\begin{split}
\beta_0 & = \overline{y}-\beta_1\overline{x}_1-\beta_2\overline{x}_2 \\
\beta_1 & =\frac{\sum{(x_1y})\sum{(x_2)^2}-\sum{(x_2y)}\sum{(x_1x_2})}{\sum{(x_1)^2}\sum{(x_2)^2}-(\sum{x_1x_2})^2} \\
\beta_2 & =\frac{\sum{(x_2y)}\sum{(x_1)^2}-\sum{(x_1y)\sum{(x_1x_2)}}}{\sum{(x_1)^2}\sum{(x_2)^2}-(\sum{x_1x_2})^2}\\
\end{split}
\end{equation}

Metode 2


atau dalam persamaan yang lainnya untuk mencari \(\beta_0\), \(\beta_1\), dan \(\beta_2\) yaitu
\begin{equation}
\begin{split}
\sum{Y}  & = \beta_0n+\beta_1\sum{X_1}+\beta_2\sum{X_2}\\
\sum{X_1Y} & =\beta_0\sum{X_1}+\beta_1\sum{X_1^2}+\beta_2\sum{X_1X_2}\\
\sum{X_2Y} & =\beta_0\sum{X_2}+\beta_1\sum{X_1X_2}+\beta_2\sum{X_2^2}\\
\end{split}
\end{equation}
kalian bisa ubah kedalam persamaan array
$$A = \beta H$$
yaitu

$$ A=\begin{pmatrix}
    n & \sum{X_1} & \sum{X_2} \\
   \sum{X_1} & \sum{X_1^2} & \sum{X_1X_2} \\
   \sum{X_2} & \sum{X_1X_2} & \sum{X_2^2} \\

\end{pmatrix},
\beta = \begin{pmatrix}
   \beta_0 \\
   \beta_1 \\
   \beta_2 \\
\end{pmatrix},

H = \begin{pmatrix}
    \sum{Y} \\
    \sum{X_1Y}\\
    \sum{X_2Y}
\end{pmatrix}
$$
gampang sekali untuk mencari \(\beta\) dengan cara, jika \(A\beta = H\), maka
$$\beta = A^{-1} H$$

Dataset

Mari coba dengan dataset berikut ini

>> data

data =

  11×4 table

    tahun    harga    per    roi
    _____    _____    ___    ___

    2003     8300      5      6 
    2004     7500      3      5 
    2005     8950      4      4 
    2006     8250      5      6 
    2007     9000      4      3 
    2008     8750      3      5 
    2009     9500      5      6 
    2010     8500      6      4 
    2011     8350      4      6 
    2012     9500      6      5 
    2013     9750      7      6 

>> 

Sebagai variabel Y yaitu harga, sedangkan x1 yaitu per; serta x2 yaitu roi, maka dari dataset diatas didapatkan hasil berikut

A =
    11    52    56
    52   262   268
    56   268   296
H =
       96350
      460450
      490450

Dan \(\beta\) nya sebagai berikut

beta_0 =
   7.7351e+03
beta_1 =
  328.6184
beta_2 =
 -104.0022

Sangat mudah sekali bukan? Penulis kasih kodenya yang lebih lengkap sesuai dengan persamaan/cara no 2 yang digunakan

Prediksi

Tentu kalian akan membandingkan kinerja regresi berganda untuk melakukan prediksi dan targetnya, cara mudahnya menggunakan plot saja

y2 = beta_0+beta_1*x1+beta_2*x2;
 
figure
hold on
plot(y);
plot(y2);
xlabel('data ke n'),ylabel('harga')
grid on
legend('Target','Prediksi')
title('Regresi Berganda')

Buku Belajar Machine Learning dengan Matlab - Regresi Linear Berganda

Kode Lengkap Matlab

Kalian bisa coba dengan kode berikut untuk Regresi Linear Berganda

clc;clear all;close all; format compact; format short;
data = readtable('data.csv')
 
y = data.harga; %target
x1 = data.per;
x2 = data.roi;
 
%ubah menjadi persamaan array/matrix
n = length(y);
 
A = [n, sum(x1), sum(x2);
    sum(x1), sum(x1.^2), sum(x1.*x2);
    sum(x2), sum(x1.*x2), sum(x2.^2)]
 
H = [sum(y); sum(x1.*y); sum(x2.*y)]
 
%hitung nilai beta
beta = inv(A)*H;
%hasil beta
beta_0 = beta(1)
beta_1 = beta(2)
beta_2 = beta(3)

Maka dari hasil diatas, persamaan nya menjadi
$$y = \beta_0+\beta_1x_1+\beta_2x_2$$
menjadi
$$y = 77351+328.6184*x_1-104.0022*x_2$$

Menghitung Regresi Berganda dengan Jumlah Variabel lebih dari 2

Sedangkan untuk jumlah variabel lebih 2, maka rumusnya sebagai berikut, misalkan untuk 4 variabel

\begin{equation}
\begin{split}
\sum{x_1Y} & =\beta_1\sum{x_1^2}+\beta_2\sum{x_1x_2}+\beta_3\sum{x_1x_3}  \\
\sum{x_2Y} & =\beta_1\sum{x_1x_2}+\beta_2\sum{x_2^2}+\beta_3\sum{x_2x_3}  \\
\sum{x_3Y} & =\beta_1\sum{x_1x_3}+\beta_2\sum{x_2x_3}+\beta_3\sum{x_3^2}  \\
\sum{x_4Y} & =\beta_1\sum{x_1x_4}+\beta_2\sum{x_2x_4}+\beta_3\sum{x_3x_4}+\beta_4 \sum{x_4^2} \\
\beta_0 & =Y\prime-\beta_1X_1\prime-\beta_2X_2\prime-\beta_3X_3\prime \\
\end{split}
\end{equation}

dengan \(Y\prime\) dan \(X\prime\) adalah rerata, sebelum kalian memasukan kedalam persamaan diatas, maka perlu kalian hitung dulu
\begin{equation}
\begin{split}
\sum{x_n^2 } & = \sum{X_n^2}-\frac{{(\sum{X_n}})^2}{n} \\
\sum{x_n^2y} & = \sum{X_nY}-\frac{\sum{X_n}\sum{Y}}{n} \\
\end{split}
\end{equation}

Makin banyak sekali dan membuat kalian bisa pusing, nah mendingan kita gunakan saja function \(fitlm\) bawaan Matlab untuk Multi Regression nya

Multi Regression dengan Matlab

Kode untuk Multi Regression dengan Matlab seperti dibawah ini, cukup 1 baris saja

clc;clear all;close all; format compact; format short;
data = readtable('data.csv')

y = data.harga; %target
X = [data.per,data.roi]; %prediktor

model = fitlm(X,y)

Hasilnya

data =
  11×4 table
    tahun    harga    per    roi
    _____    _____    ___    ___
    2003     8300      5      6 
    2004     7500      3      5 
    2005     8950      4      4 
    2006     8250      5      6 
    2007     9000      4      3 
    2008     8750      3      5 
    2009     9500      5      6 
    2010     8500      6      4 
    2011     8350      4      6 
    2012     9500      6      5 
    2013     9750      7      6 
model = 
Linear regression model:
    y ~ 1 + x1 + x2

Estimated Coefficients:
                   Estimate      SE       tStat        pValue  
                   ________    ______    ________    __________
    (Intercept)     7735.1     1052.6      7.3488    8.0029e-05
    x1              328.62     152.35       2.157      0.063081
    x2                -104     185.55    -0.56051       0.59048

Number of observations: 11, Error degrees of freedom: 8
Root Mean Squared Error: 594
R-squared: 0.368,  Adjusted R-Squared 0.21
F-statistic vs. constant model: 2.33, p-value = 0.16

Prediksi

Tentu kalian akan membandingkan kinerja regresi berganda untuk melakukan prediksi dan targetnya, cara mudahnya menggunakan plot saja dan function \(predict\)

y2 = predict(model,X);
figure
hold on
plot(y);
plot(y2);
xlabel('data ke n'),ylabel('harga')
grid on
legend('Target','Prediksi')
title('Regresi Berganda - FitLM')

Buku Belajar Machine Learning dengan Matlab - Regresi Linear Berganda


Buku Belajar Machine Learning dengan Matlab - Regresi Linear

Buku Belajar Machine Learning dengan Matlab - Regresi Linear

Sinopsis

Regresi Linear adalah Metode Statistik yang berfungsi untuk menentukan hubungan sebab akibat antara independen Penyebab (X) terhadap  dependen akibatnya Y dengan bentuk umum persamaan linear yaitu
$$y = a+bX$$

Dimana :
Y = Variabel Response atau Variabel Akibat (Dependent)
X = Variabel Predictor atau Variabel Faktor Penyebab (Independent)
a = konstanta
b = koefisien regresi (kemiringan); besaran Response yang ditimbulkan oleh Predictor.

Untuk menghitung nilia \(a\) dan \(b\) yaitu
$$a=\frac{\sum{y} \sum{x^2}-\sum{x}\sum{xy}}{n\sum{x^2}-(\sum{x})^2}$$

$$b=\frac{n\sum{xy}-\sum{x}\sum{y}}{n\sum{x^2}-(\sum{x})^2}$$

Dengan \(n\) adalah jumlah data observasi, langkah sederhana kapan kalian menggunakan regresi linear yaitu dengan cara memplotkan data tersebut kedalam sebuah grafik, karena regresi linear bersifat linear maka akan tampak data tersebut berbanding lurus.

Dataset

Berikut contoh dataset yang digunakan (data ini disimpan dengan nama data.csv)

>> data

data =

  30×3 table

    hari    suhu    jumlah_cacat
    ____    ____    ____________

      1      24          10     
      2      22           5     
      3      21           6     
      4      20           3     
      5      22           6     
      6      19           4     
      7      20           5     
      8      23           9     
      9      24          11     
     10      25          13     
     11      21           7     
     12      20           4     
     13      20           6     
     14      19           3     
     15      25          12     
     16      27          13     
     17      28          16     
     18      25          12     
     19      26          14     
     20      24          12     
     21      27          16     
     22      23           9     
     23      24          13     
     24      23          11     
     25      22           7     
     26      21           5     
     27      26          12     
     28      25          11     
     29      26          13     
     30      27          14     

>> 

Ada 2 variabel yaitu suhu sebagai X dan jumlah_cacat sebagai y, kalian bisa plotkan dalam sebuah grafik, seperti tampil pada grafik dibawah ini. Bahwa terlihat X dan Y berbanding lurus positif yaitu ketika suhu naik maka jumlah cacat semakin banyak.

Buku Belajar Machine Learning dengan Matlab - Regresi Linear

Maka dengan menggunakan rumus dibawah ini Untuk menghitung nilia \(a\) dan \(b\) yaitu
$$a=\frac{\sum{y} \sum{x^2}-\sum{x}\sum{xy}}{n\sum{x^2}-(\sum{x})^2}$$

$$b=\frac{n\sum{xy}-\sum{x}\sum{y}}{n\sum{x^2}-(\sum{x})^2}$$

Didapatkan hasil sebagai berikut

a =

  -24.3809


b =

    1.4498

Kita akan buktikan nilai tersebut kedalam sebuah plot grafik / fitting

Buku Belajar Machine Learning dengan Matlab - Regresi Linear

Kode Matlab

Agar kalian bisa pelajari, berikut dibawah ini penulis berikan kodenya untuk menghitung regresi linear, kalian setup sendiri ya untuk data.csv nya

clc;clear all;close all;
data = readtable('data.csv');
X = data.suhu;
y = data.jumlah_cacat;
 
figure
scatter(X,y,30,'filled')
xlabel('suhu'),ylabel('jumlah cacat')
title('Data Suhu dan Jumlah Cacat');
grid on
 
%hitung
[a,b] = regresilinear(X,y)
 
%fitting
y2 = a+b*X;
 
figure
hold on
scatter(X,y,30,'filled')
line(X,y2)
xlabel('suhu'),ylabel('jumlah cacat')
title('Data Suhu dan Jumlah Cacat');
grid on
legend('target','line fitting')
hold off
 
 
%hitung regresi linear
function [a,b] = regresilinear(X,y)
    n = length(X);
    pembilang = (sum(y).*sum(X.^2))-(sum(X).*sum(X.*y));
    penyebut = n*sum(X.^2)-sum(X)^2;
    a = (pembilang/penyebut);
 
    pembilang = n*sum(X.*y)-sum(X).*sum(y);
    penyebut = n*sum(X.^2)-sum(X)^2;
    b = pembilang/penyebut;
 
end

Function Regresi di Matlab

Tentu di Matlab sudah diberikan koq function built in, kalian bisa menggunakan function \(fitlm\) yaitu Linear Model, contoh penggunaanya sebagai berikut

clc;clear all;close all;
data = readtable('data.csv');
X = data.suhu;
y = data.jumlah_cacat;
 
%panggil function regresi linear di Matlab
model = fitlm(X,y)

Hasil

model = 


Linear regression model:
    y ~ 1 + x1

Estimated Coefficients:
                   Estimate       SE        tStat       pValue  
                   ________    ________    _______    __________

    (Intercept)    -24.381        1.984    -12.289    8.4852e-13
    x1              1.4498     0.084632     17.131    2.2552e-16


Number of observations: 30, Error degrees of freedom: 28
Root Mean Squared Error: 1.2
R-squared: 0.913,  Adjusted R-Squared 0.91
F-statistic vs. constant model: 293, p-value = 2.26e-16

Kalian bisa melihat summary nya dengan Intercept (a) = -24.381 dan variabel x1 (b) = 1.4498, untuk melakukan prediksi/fitting caranya sebagai berikut

y2 = predict(model,X)

Buku Belajar Machine Learning dengan Matlab - Regresi Linear

Ini kode lengkapnya yang bisa kalian pelajari lagi

clc;clear all;close all;
data = readtable('data.csv');
X = data.suhu;
y = data.jumlah_cacat;
 
%panggil function regresi linear di Matlab
model = fitlm(X,y)
 
 
y2 = predict(model,X);
 
 
figure
hold on
scatter(X,y,30,'filled')
line(X,y2)
xlabel('suhu'),ylabel('jumlah cacat')
title('Data Suhu dan Jumlah Cacat');
grid on
legend('target','line fitting')
hold off

Kalau kalian masing bingung kesini saja
  1. Loading Data di Matlab
  2. Plot Grafik di Matlab


Daftar Pustaka Regresi Linear


  • Hasan M. Iqbal, Ir., M.M. 2005. Pokok-Pokok Materi Statistik 1 (Statistik Deskriptif). Edisi Kedua. Jakarta: PT. Bumi Aksara.
  • Priyatno Duwi. 2008. Mandiri Belajar SPSS (Statistical Product and Service Solution) Untuk Analisis Data dan Uji Statistik. Yogyakarta: MediaKom.
  • Sugiyono.2010.  Statistik Untuk Penelitian. Alfabeta : Bandung.

Buku Belajar Machine Learning dengan matlab - Jenis Perhitungan Error dalam Forecasting

https://www.wallstreetmojo.com/percent-error-formula/

Sinopsis

Kalau kalian sedang bekerja untuk analisis forecasting tentu akan berhadapan dengan cara mengukur kinerja sebuah algoritma forecasting yaitu antara hasil prediksi dan aktualnya. Selain menggunakan Root Mean Square, kalian bisa menggunakan rumus berikut

Mean absolute deviation (MAD)

Mean absolute deviation mengukur akurasi dari forecast dengan membuat sama rata dari besarnya kesalahan perkiraan yang dimana setiap forecasting memiliki nilai absolut untuk setiap errornya.

Rumus yang dipakai untuk menghitung MAD adalah :
$$MAD=\frac{1}{n}\sum_{t=1}^{n}|y_{t1}-y_{t2}| $$

dengan nilai \(y_{t1}\) adalah nilai aktual dan \(y_{t2}\) nilai forecasting pada nilai \(t_{2}\)


Mean squared deviation (MSD)

biasanya dipakai untuk mengukur akurasi dari nilai time series yang mau dihitung. Dimana MSD biasanya memiliki efek lebih besar dibandingkan MAD.

Rumus yang dipakai untuk menghitung MSD adalah :

$$MSD=\frac{1}{n}\sum_{t=1}^{n}|y_{t1}-y_{t2}|^{2}$$

Mean absolute percentage error (MAPE)


Mean absolute percentage error dihitung dengan cara mencari error/kesalahan absolut di setiap periode yang dimana dibagi dengan nilai observasi yang aktual pada periode itu, dan dibuat rata – rata dari absolute percentage error tersebut.

Rumus yang dipakai untuk menghitung MAD adalah :
$$MAPE=\frac{1}{n}\sum_{t=1}^{n}\frac{|y_{t1}-y_{t2}|}{y_{t1}}$$

Agar kalian lebih mudah, berikut sudah dibuatkan contoh kodenya di Matlab

clc;clear all;close all;
target = [10,20,45,80];
prediksi = [15,18,40,81];

error_mse = immse(target,prediksi); %rumus bawaan untuk menghitung MSE
error_mad = hitungmad(target,prediksi);
error_msd = hitungmsd(target,prediksi);
error_mape = hitungmape(target,prediksi);

rincian_error = array2table([error_mse,error_mad,error_msd,error_mape],'variablenames',{'mse','mad','msd','mape'});
disp('Rincian Error');
disp(rincian_error)




%ref: https://www.softscients.web.id/2020/02/buku-belajar-machine-learning-dengan_22.html
function [result]=hitungmad(x,y)
    n = 1/length(x);
    result = n *(sum(abs(x-y))); 
end

function [result]=hitungmsd(x,y)  
    n = 1/length(x);
    result = n*(sum(abs(x-y).^2));
    
end

function [result]=hitungmape(x,y)
    n = 1/length(x);
    result = n*(sum(abs(x-y)./y));
end


Hasil

Rincian Error
     mse     mad      msd      mape  
    _____    ____    _____    _______

    13.75    3.25    13.75    0.14545

Kalian bisa melihat hasilnya diatas, terserah kalian akan menggunakan rumus yang mana, kunjungi link ini kalau kalian ingin pelajari machine learning dengan matlab

Friday, February 21, 2020

Buku Belajar Pemrograman Java untuk Pemula - Aturan Sintaks-Debugging-Standar Input Output Java


Sinopsis

Setiap bahasa pemrograman mempunyai sintaks/aturan penulisan berbeda-beda, begitupun dengan Java, kalian ada yang wajib ikuti ataupun hanya saran, tapi sebaiknya kalian ikuti saja karena merupakan standar industri yang digunakan saat ini. Bila kalian pahami, hanya untuk mencetak “Hello” saja ternyata dibutuhkan kode yang cukup banyak, tapi tenang saja kalian akan dikenalkan satu-persatu melalui buku ini. Aturan umum yang digunakan pada pemrograman java dan sebaiknya diikuti yaitu
  1. nama kelas harus Capitalize Each Word, misalkan HitungLuas, HitungJariJari
  2. nama variabel menggunakan huruf kecil semuanya kecuali berupa konstanta berupa final
  3. nama method/procedure/function menggunakan huruf kecil dan huruf besar sebagai pemisahnya, misalkan setView(), setVisible()
Bahasa java merupakan java type strong sehingga perlu adanya deklrasi type variabel, ada beberapa type variabel primitive.

Buku Belajar Pemrograman Java untuk Pemula - Aturan Sintaks-Debugging-Standar Input Output Java

Contoh Pembuatan Class

Buatlah 2 class yaitu LuasBidangDatar.java dan Demo.java seperti berikut

//LuasBidangDatar.java
public class LuasBidangDatar {
    
    public double luasLingkaran(double phi,double r)
    {
        return phi*Math.pow(r,2);
    }
}

//Demo.java
public class Demo {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        final double PHI = 3.14;
        double panjang_jari_jari = 50;
        LuasBidangDatar LBD = new LuasBidangDatar();
        double luas_lingkaran = LBD.luasLingkaran(PHI,panjang_jari_jari);
        
    }

    
}

Untuk penempatan lokasi filenya yaitu seperti berikut 

Buku Belajar Pemrograman Java untuk Pemula - Aturan Sintaks-Debugging-Standar Input Output Java

Langkah diatas yaitu kita membuat class umum untuk perhitungan luas bidang datar dengan 1 method  menghitung luas lingkaran, sedangkan class Demo digunakan untuk memanggil class LuasBidangDatar. Nah dibawah ini kalian akan belajar cara debugging kode.

Debugging - Toggle Break

Kalau dalam developing kode, cara terbaiknya untuk cek logika yaitu dengan cara lakukan debugging kode sehingga diketahui output dari masing-masing variabel. 

Buku Belajar Pemrograman Java untuk Pemula - Aturan Sintaks-Debugging-Standar Input Output Java

Coba kalian tambahkan variabel end seperti diatas sebagai break debug, kemudian pada line nember (23) kalian klik saja menggunakan mouse, maka akan tampil seperti berikut

Buku Belajar Pemrograman Java untuk Pemula - Aturan Sintaks-Debugging-Standar Input Output Java

Pastikan editor sudah aktif di Demo.java sebagai main application

Buku Belajar Pemrograman Java untuk Pemula - Aturan Sintaks-Debugging-Standar Input Output Java

Akan tampilkan variabel seperti berikut

Buku Belajar Pemrograman Java untuk Pemula - Aturan Sintaks-Debugging-Standar Input Output Java

Input dan Ouput pada Java

Setiap program yang kita buat ada 3 kegiatan utama yaitu
  1. input yaitu menerima masukan dari user berupa event mouse, ketikan keyboad, ataupun berupa file
  2. proses yaitu proses sebuah aplikasi
  3. output yaitu menampilkan hasil berupa text, gambar, suara, atau file
untuk urusan Input Java telah disediakan oleh 3 class yaitu
  1. Class Scanner
  2. Class BufferReader
  3. Class Console
Tiga class tersebut untuk mengambil input  berbasis teks (console). Sedangkan untuk GUI menggunakan class yang lain seperti JOptionPane dan inputbox pada form.

untuk menampilkan Output, ada beberapa fungsi yang sudah disediakan oleh Java:
  1. System.out.print()
  2. System.out.println()
  3. System.out.format()
Fungsi print() akan menampilkan teks apa adanya. Sedangkan println() akan menampilkan teks dengan ditambah baris baru / newline, sedangkan untuk menggabungkan String yang lebih kompleks, kalian bisa menggunakan fungsi format().

Input Scanner

Kalian bisa buat class seperti berikut

//DemoInputScanner.java
import java.util.Scanner;

/**
 *
 * @author mulkan.ms@gmail.com
 */
public class DemoInputScanner {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        String nama;
        double nilai;
        Scanner input = new Scanner(System.in);
        System.out.print("Ketikan nama ");
        nama = input.nextLine();
        System.out.print("Ketikan nilai ");
        nilai = input.nextDouble();
        System.out.println("Informasi yang ter input yaitu");
        System.out.println("nama : "+nama);
        System.out.println("nilai : "+nilai);
        input.close();
    }
    
}

Hasil

Ketikan nama mulkan syarif
Ketikan nilai 9.8
Informasi yang ter input yaitu
nama : mulkan syarif
nilai : 9.8

Input BufferedReader

Kalian bisa buat class seperti berikut

//file : DemoInputBufferedReader.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 *
 * @author mulkan.ms@gmail.com
 */
public class DemoInputBufferedReader {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        // TODO code application logic here
        String nama;
        double nilai;
        InputStreamReader  stream = new InputStreamReader (System.in);
        BufferedReader input = new BufferedReader(stream);
        System.out.print("Ketikan nama ");
        nama = input.readLine();
        System.out.print("Ketikan nilai ");
        nilai = Double.parseDouble(input.readLine()); //
        System.out.println("Informasi yang ter input yaitu");
        System.out.println("nama : "+nama);
        System.out.println("nilai : "+nilai);
        input.close();
    }
    
}

Hasil

Ketikan nama bejo pamungkas bagus
Ketikan nilai 7.9
Informasi yang ter input yaitu
nama : bejo pamungkas bagus
nilai : 7.9

Input Console

Kalian bisa buat class seperti berikut

//file: DemoInputConsole.java
import java.io.Console;

/**
 *
 * @author mulkan.ms@gmail.com
 */
public class DemoInputConsole {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        String nama;
        double nilai;
        Console input = System.console();
        System.out.print("Ketikan nama ");
        nama = input.readLine();
        System.out.print("Ketikan nilai ");
        nilai = Double.parseDouble(input.readLine());
        System.out.println("Informasi yang ter input yaitu");
        System.out.println("nama : "+nama);
        System.out.println("nilai : "+nilai);
        
    }
    
}

Khusus untuk class diatas yang menggunakan Console harus kalian jalankan di Command Prompt tidak bisa menggunakan Netbeans
Buku Belajar Pemrograman Java untuk Pemula - Aturan Sintaks-Debugging-Standar Input Output Java

Output Format

Nah kalian bisa belajar System.out.format() seperti  berikut ini

//file DemoOutput.java

/**
 *
 * @author mulkan.ms@gmail.com
 */
public class DemoOutput {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        String namaDepan = "Mulkan Syarif";
        int umur = 25;
       

        System.out.format("Nama saya %s tahun %n", namaDepan, umur);
    }
    
}

Hasil

Nama saya Mulkan Syarif 25 tahun


Tuesday, February 18, 2020

Buku Pengolahan Citra Digital dengan Matlab - Kode Matlab untuk Menghitung Histogram Equalization

Kalian tentu ingin tahu kan, cara menghitung histogram equalization, cara sangat gampang koq, apalagi di matlab dengan function find secara mudah dapat menghitung frekuensinya dengan cepat. Secara umum untuk menghitung histogram equalization yaitu
  1. menghitung nilai frekuensi
  2. menghitung nilai kumulatif
  3. menghitung nilai probability
Kalian bisa melihat algoritmanya sesuai dengan contoh dibawah ini


Agar mudah, penulis berikan contoh untuk gambar format grayscale seperti berikut ini, kalian bisa pelajari Kode Matlab untuk Menghitung Histogram Equalization

clc;clear all;close all;
A = imread('D:/panoramic.jpg');
if ndims(A)==3
    A = rgb2gray(A);
end
%nenghitung distribusi nilai pixel yaitu 0 s.d 255
A = A+1; %%untuk menghindari angka 0 terjadi
mn = size(A,1)*size(A,2);
bin = 255+1;
frekuensi = zeros(1,bin);

for i=1:length(frekuensi)
    jumlah = length(find(A==i));
    frekuensi(i) = jumlah;
end

%menghitung cummulatif dan probabilitnya
cumulatif = zeros(1,bin);
cum = 0;
for i=1:size(cumulatif,2)
    cum = cum + frekuensi(i);
    cumulatif(i) = cum;
    probc(i)=cumulatif(i)/mn;

    output(i)=round(probc(i)*bin);
end
output;

B = zeros(size(A,1),size(A,2));
for i=1:size(B,1)
    for j=1:size(B,2)
        B(i,j) = output(A(i,j))-1;
    end
end
A = A - 1; %normalkan lagi
B = uint8(B); %casting lagi
final = [A,B];

figure,
imshow(final),title('Hasil Perbandingan');
return



Sangat simple sekali kan, untuk menghitung Histogram Equalization

Enhancement Histogram Equalization untuk Format True Color

Sinopsis

Selama ini kalian pasti sudah mengenal penggunaan histogram equalization/perataaan nilai histogram  yang telah diterapkan untuk format gambar grayscale, nah sebenarnya untuk penerapan histeq pada format true color bisa koq digunakan, dengan cara men set dulu channel nya sehingga tiap-tiap channel diproses secara terpisah tapi ini khusus untuk Matlab versi 2009a, untuk versi Matlab 2018a sudah bisa dilakukan secara langsung, tapi sayangnya menghasilkan hasil yang berbeda


Histogram Equalization

Untuk metode yang pertama menggunakan teknik looping perchannel, sedangkan cara kedua langsung menggunakan histeq tanpa ada proses looping. Kalian bisa pelajari kode dibawah ini

clc;clear all;close all;
I = imread('D:/panoramic.jpg');
%untuk versi R2009
for i = 1:3
    I2(:,:,i) = histeq(I(:,:,i),256);
end

%untuk versi R2018a, langsung gunakan saja
I3 = histeq(I,256);

gabung = [I,I2,I3];

figure
imshow(gabung),title('Original - Cara 1 - Cara 2');

Enhancement Histogram Equalization untuk Format True Color

Menurut penulis sih, harusnya menggunakan metode 1 karena operasi histeq dilakukan per channel

Monday, February 17, 2020

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Sinopsis

Tentu kalau membuat aplikasi yang berukuran besar dan melibatkan banyak developer, kalian harus membuat struktur direktori tersendiri, misalkan direktori source, direktori library, direktory resource seperti icon bahkan untuk urusan versioning kalian bisa menggunakan Github. Nah dengan menggunakan IDE seperti Netbeans bahkan kalian akan mendapatkan fitur debuging, compile, serta package dalam 1 aplikasi saja. Setiap aplikasi yang dibuat menggunakan java akan terdapat *.class yang sangat banyak sekali, sehingga harus dikumpulkan/compress menjadi satu kesatuan dengan nama *.jar karena Java bisa berjalan di multi OS sehingga output dari kompile bukan *.exe.

IDE Netbeans di develop menggunakan Java berbasis GUI Swing hal yang berbeda kalau kalian menggunakan Eclipse berbasis SWT. Pada Bab ini kalian akan diberikan cara membuat project mulai dari
  1. Create Project
  2. Membuat Main Class yaitu class yang akan di eksekusi pertama kali ketika dipanggil oleh JRE
  3. Kompile project menjadi aplikasi *.jar
  4. Menjalankan aplikasi berbasis *.jar 
Agar lebih mudah, project yang akan kalian buat yaitu "Hello World" yang  berbasis console bukan GUI sehingga run nya pun harus menggunakan command prompt

Create New Project

Setelah buka Netbeans, kalian bisa klik icon New Project
Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Pilih saja Java Application

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Kita akan membut project Demo kalian bebas sih memberikan namanya

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Maka akan muncul project Demo termasuk Library Defaultnya yaitu JDK 1.8, bila Project yang mengandung banyak library bisa kalian lihat lihat di daftar Libraries

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Membuat New Java Class

Kita ingin membuat class sehingga pilih saja New -> Java Class

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Misalkan kita akan membuat class HelloWorld.java

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

akan ter create secara otomatis yaitu HelloWorld.java yang berlokasi di Source Packages

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Nah sekarang kalian bisa koding, dengan mengetikan  berikut

/**
 *
 * @author mulkan.ms@gmail.com
 */
public class HelloWorld {
    public static void main(String [] args )
    {
     
        System.out.println("Hello");
    }
    
}

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Lakukan Compile File

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Kalian bisa melihat hasil proses Compile File nya

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Run Main Class

Untuk run main Class nya kalian bisa ikuti cara berikut

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

hasilnya bisa ditampilkan di Output

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Setup Main Class di Project

Setiap Project yang berbasis Aplikasi (bukan untuk sebagai Library) maka dibutuhkan Main Class yang akan dieksekusi pertama kali ketika dipanggil oleh JRE sehingga perlu kalian setup menggunakan langkah berikut ini

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Main Class kalian pilih dengan Browse

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Yup menjadi seperti dibawah ini, biarkan saja yang lainnya default (akan dijelaskan ke tingkat lanjut)

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans


Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

kalian bisa melihat ada file Demo.jar yang merupakan compress Project nya



Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

tapi kalau kalian buka menggunakan seperti dibawah ini

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans

Tidak akan terjadi apapun, karena aplikasi tersebut berbasis Console saja bukan aplikasi berbasis GUI sehingga kalian akan tetap membutuhkan Command Prompt untuk run nya, ketikan saja perintah berikut

java -jar Demo.jar

Buku Belajar Pemrograman Java untuk Pemula - Membuat Project dengan Netbeans


Buku Belajar Pemrograman Java untuk Pemula - Program Java Hello World dengan Notepad

Sinopsis

Pada dasarnya kalian bisa melakukan coding / menulis kode menggunakan editor sederhana yaitu Notepad serta melakukan kompilasi kode menggunakan command prompt, walaupun hal ini sudah sangat jarang dilakukan dibahas apalagi oleh Buku lain banyak yang beredar dipasaran. Hal ini patut kalian coba koq karena pas dulu penulis belajar Java pun pada tahun 2000an masih menggunakan Command Prompt dalam kompilasi kode dan editor Notepad sebelum menggunakan Eclipse dan Netbeans, ya maklum karena tidak punya komputer sendiri sehingga hanya bawa JRE dan JDK didalam flashdik demi belajar bahasa Java.

Membuat Hello World

Pada sesi ini kalian diajak untuk membuat project pertama yang umum dalam pengenalan bahasa pemrograman yaitu HelloWorld. Kalian gunakan terlebih dahulu sebuah editor Notepad dengan mengetikan kode berikut yang disimpan di D:/Demo.java ingat ya jangan sampai salah menyimpan lokasi dan nama filenya harus huruf besar didepannya yaitu Demo.java



public class Demo
{
    public static void main(String [] args)
    {
        System.out.println("Hello");
    }
}







Buku Belajar Pemrograman Java untuk Pemula - Program Java Hello World dengan Notepad


Demo merupakan nama public class sehingga kalau disimpan harus sesuai dengan nama nya yaitu Demo.java, kalian simpan saja di D:/Demo.java. Kemudian kalian lakukan compile menggunakan javac dari *.java menjadi *.class; hal ini berbeda dengan Bahasa Pemrograman umumnya yang di compile menjadi *.exe;

Kompilasi Kode Java

Sekarang kalian buka saja command prompt dan arahkan ke lokasi D:/ sesuai dengan lokasi penyimpanan diatas yaitu D:/Demo.java, kemudian ketikan perintah berikut


javac Demo.java




Buku Belajar Pemrograman Java untuk Pemula - Program Java Hello World dengan Notepad


Selamat, kalian sudah compile *.java menjadi *.class, kalian bisa cek akan terdapat file Demo.class

Buku Belajar Pemrograman Java untuk Pemula - Program Java Hello World dengan Notepad


Run Kode Java

Untuk run kode *.class, dibutuhkan JRE dengan memanggil java, seperti contoh berikut

java Demo





Buku Belajar Pemrograman Java untuk Pemula - Program Java Hello World dengan Notepad


Selamat! Kalian sudah bisa lakukan runing kode java di Windows udah mirip programmer jaman tempo doeloe!

Buku Belajar Bahasa Pemrograman Java untuk Pemula


Sinopsis

Bahasa Java sudah semakin familiar sebagai bahasa pengantar pemrograman di tingkat SMK/SMA maupun D3/S1 karena dibangun dengan berbasis OOP yaitu Object Oriented Programming dengan 3 pilar utama yaitu Inheritance, Overloading, dan poliporisme. Basis komunitas yang kuat serta dukungan untuk pengembangan aplikasi Mobile (dulu dikenal dengan J2ME), Desktop (J2SE), serta Server (J2EE). Untuk saat ini Java sudah mencapai versi 1.8

Kalau kalian menggunakan Linux seperti Ubuntu, Red Hat sudah biasanya JRE (java runtime enviroment) sudah terinstall dengan baik, sedangkan JDK (java development kit) bisa instal tersendiri. Bagi kalian yang sudah pernah belajar C/C++, Pascal/Delphi, Basic/Visual Basic ketika di source code di compile maka akan tercipta file *.exe yang siap di exceute, hal ini berbeda dengan Java yang akan membutuhkan JDK ketika kalian akan compile *.java ke *.class yang merupakan MIL machine intermediate languange. MIL tersebut akan dicompile oleh JRE (environment virtual) lagi sesuai dengan OS tersebut berada, maka java bersifat dapat di run diberagam OS asalkan sudah terinstall JRE nya.

Buku ini berbeda dengan yang sudah penulis terbitan sebelumnya, karena fokus buku ini lebih kepada dasar-dasar untuk pemula karena banyak meminta kepada Penulis untuk membahas dasar-dasar bahasa java untuk pemula mulai dari proses download, instalasi dan bahasa java itu sendiri, apalagi yang masih betul-betul awam mengenai bahasa pemrograman terutama yang jurusan SMK RPL (rekayasa perangkat lunak) sehingga bagi kalian akan terasa terbantu sekali dengan adanya buku ini.

Bahasa Java sudah banyak digunakan untuk kalangan industri software besar sebagai core enginenya seperti Matlab, SPPS versi 12, JMonkey Engine dan yang lainnya

Daftar Isi Buku

Sistem Operasi

Untuk Sistem Operasi kalian bisa menggunakan linux berbasis ubuntu, red hat, mac OS, ataupun OS sejuta Umat yaitu Windows 10. Penulis sarankan menggunakan OS berbasis 64bit saja. Tidak masalah kalau kalian membuat aplikasi di Windows kemudian dijalankan di Linux. Aplikasi Java akan tetap berjalan tanpa ada kendala apapun.Tentu hal ini menjadi keuntungan bagi kalian yang suka coding menggunakan linux daripada windows. Dalam buku ini menggunakan Windows 64bit

Download JRE dan JDK

Kalian harus download terlebih dahulu JRE dan JDK nya, Dowload JRE : https://www.oracle.com/java/technologies/javase-jre8-downloads.html

Buku Belajar Bahasa Pemrograman Java untuk Pemula



Download JDK: https://www.oracle.com/java/technologies/javase-jdk11-downloads.html

Buku Belajar Bahasa Pemrograman Java untuk Pemula

Kalian install secara default saja, tinggal klik dan next saja.

Setup Path System

Setelah kalian install JRE an JDK akan terdapat 2 folder di C:/Program Files/Java seperti berikut

Buku Belajar Bahasa Pemrograman Java untuk Pemula

Agar bisa dikenali oleh System Terminal, kalian setup PATH, untuk memunculkan SYSTEM PATH, kalian ketikan saja di Universal Search Windows seperti berikut


Buku Belajar Bahasa Pemrograman Java untuk Pemula

Akan tampil sebagai berikut

Buku Belajar Bahasa Pemrograman Java untuk Pemula

Pilih Environment Variables maka akan tampil kotak dialog dibawah ini

Buku Belajar Bahasa Pemrograman Java untuk Pemula

Edit lah variable PATH akan tampil kotak dialog dibawah ini

Buku Belajar Bahasa Pemrograman Java untuk Pemula

Tambahkan lokasi JRE dan JDK nya
1. C:\Program Files\Java\jdk1.8.0_241\bin
2. C:\Program Files\Java\jre1.8.0_241\bin 
dengan cara Pilih New sehingga menjadi

Buku Belajar Bahasa Pemrograman Java untuk Pemula

Kalian pastikan saja letak dar JRE dn JDK nya diatas, kalau sudah semuanya, OK saja. Kalian bisa cek dengan mengetikan perintah pada Command Prompt

java -version 

Pada command prompt berikut ini untuk mengetahui bahwa JRE sudah dikenali oleh System

Buku Belajar Bahasa Pemrograman Java untuk Pemula


Sedangkan untuk JDK / compile file *.java menjadi *.class dengan perintah

javac

Buku Belajar Bahasa Pemrograman Java untuk Pemula


Selamat, kalian sudah bisa melakukan instalasi Java dengan baik yaitu JRE dan JDK nya,

Integrated Development Environment

Dalam urusan menulis kode biasanya sih pakai notepad saja cukup koq, cuman agak repot karena harus melakukan compile dan debug menjadi tidak menyatu, oleh karena itu kalian memerlukan sebuah IDE integrated development environment. IDE untuk membuat aplikasi di JAVA ada banyak koq yang tersedia mulai dari Netbeans, Eclipse, Visual Studio yang memang dikhususkan untuk mempunyai fasilitas debug, compile, bahkan membuat aplikasi berbasis GUI secara drag and drop. Kalian download saja Netbeans yang saat ini sudah mencapai versi 8.1 (tahun 2020), mengapa hal ini dipilih mengingat

  1. Kemudahan fasilitas debuging
  2. Aplikasi GUI berbasis SWING
  3. Tersedia banyak module yang bisa didownload

Kalian bisa kunjungi https://netbeans.org/downloads/8.0.2/ kalian pilih yang ini saja karena yang dibutuhkan hanya untuk coding bahasa JAVA agar netbeans tidak terlalu berat dalam loading project nantinya.

Buku Belajar Bahasa Pemrograman Java untuk Pemula

Tinggal klik-klik saja pilih defaultnya untuk proses instalasi