Monday, September 23, 2019

Buku Belajar Pemrogaman Matlab - Penerapan KFold di Matlab


Seiring dengan meningkatnya traffic dan kemudahan dalam mengelola content, kami mengucapkan banyak terima kasih kepada para pembaca setia pada blog www.softscients.web.id

Per 19 Maret 2020, kami sedang melakukan migrasi ke domain dan hosting yang lebih baik yaitu
Semoga dengan alamat domain dan hosting terbaru akan semakin memudahkan para pembaca dalam mencari materi/content. Migrasi dilakukan secara bertahap yang membutuhkan waktu yang cukup lama jadi jangan kuatir selama migrasi akan dilakukan secara hati-hati untuk memimalkan broken link


kalian bisa lanjut baca lagi di  http://softscients.com/2020/03/29/buku-belajar-pemrogaman-matlab-penerapan-kfold-di-matlab/



Penggunaan KFold validation telah banyak digunakan untuk menguji proses pelatihan. Adapun secara umum ilustrasi KFold akan membagi 80% sebagai data latih dan 20% sebagai data uji, misalkan saja kita punya 12 data dengan jumlah KFOLD sebanyak 4 irisan, maka gunakan perintah berikut di Matlab


n = 1:12;
c = cvpartition(n,'KFold',4);
display(c)


c = 

K-fold cross validation partition
   NumObservations: 12
       NumTestSets: 4
         TrainSize: 9  9  9  9
          TestSize: 3  3  3  3

Artinya ada 4 fold yang masing2 terdiri dari 9 data latih dan 3 data uji. Maka untuk mengetahui index/no mana saja yang termasuk data latih dan uji, gunakan perintah berikut:

for i = 1:c.NumTestSets
    index_training = c.training(i);
    index_testing = c.test(i);
    disp(['Kfold ke ' num2str(i)])
    disp('index latih')
    disp(n(index_training))
    disp('index uji')
    disp(n(index_testing))
 
end


Kfold ke 1
index latih
     1     2     3     5     6     7     9    10    11

index uji
     4     8    12

Kfold ke 2
index latih
     2     3     4     6     7     8    10    11    12

index uji
     1     5     9

Kfold ke 3
index latih
     1     3     4     5     7     8     9    11    12

index uji
     2     6    10

Kfold ke 4
index latih
     1     2     4     5     6     8     9    10    12

index uji
     3     7    11


Kamu bisa lihat pada bahwa tiap KFold antara index data latih dan uji masing-masing tidak mempunyai index yang sama, pemilihan jumlah KFOLD sangat penting. Bila kita ubah KFOld 3 maka menjadi berikut hasilnya.

n = 1:12;
c = cvpartition(n,'KFold',3);

for i = 1:c.NumTestSets
    index_training = c.training(i);
    index_testing = c.test(i);
    disp(['Kfold ke ' num2str(i)])
    disp('index latih')
    disp(n(index_training))
    disp('index uji')
    disp(n(index_testing))
end

Kfold ke 1
index latih
     1     2     4     5     7     8    10    11

index uji
     3     6     9    12

Kfold ke 2
index latih
     2     3     5     6     8     9    11    12

index uji
     1     4     7    10

Kfold ke 3
index latih
     1     3     4     6     7     9    10    12

index uji
     2     5     8    11










Tuesday, September 10, 2019

Buku Pengolahan Citra Digital dengan Matlab - Move object to center


Mendapat pertanyaan email dari kawan, bagaimana cara nya menempatkan objek berada ditengah seperti berikut

Misalkan saja, kita mempunyai sebuah kanvas dengan ukuran 300*300, untuk menempatkan objek berikut
Agar tepat ditengah sebuah canvas.

Atas pertanyaan tersebut diatas, penulis membuat kode seperti berikut

clc;clear all;close all;
I = imread('test.png');
I2 = tocenter(I);
figure,
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(I2);
function gambar_tujuan  = tocenter(gambar)
    ukuran_kanvas = 300; %harus lebih besar dari ukuran objek    
    gambar_tujuan = zeros(ukuran_kanvas,ukuran_kanvas);
    K = ukuran_kanvas*0.5;
    b1 = K;
    k1 = K;
    baris = size(gambar,1);
    kolom = size(gambar,2);
    b2 = round(baris*0.5);
    k2 = round(kolom*0.5);
    for i=1:baris
        for j=1:kolom
            gambar_tujuan(b1-b2+i,k1-k2+j) = gambar(i,j);
        end
    end
end




Friday, September 6, 2019

buku belajar machine learning dengan matlab - Smoothing The Data and Find Major Peaks


Seiring dengan meningkatnya traffic dan kemudahan dalam mengelola content, kami mengucapkan banyak terima kasih kepada para pembaca setia pada blog www.softscients.web.id

Per 19 Maret 2020, kami sedang melakukan migrasi ke domain dan hosting yang lebih baik yaitu
Semoga dengan alamat domain dan hosting terbaru akan semakin memudahkan para pembaca dalam mencari materi/content. Migrasi dilakukan secara bertahap yang membutuhkan waktu yang cukup lama jadi jangan kuatir selama migrasi akan dilakukan secara hati-hati untuk memimalkan broken link


kalian bisa lanjut baca lagi di   http://softscients.com/2020/03/26/buku-belajar-machine-learning-dengan-matlab-smoothing-the-data-and-find-major-peaks/



 Source: https://www.coldwellbankerhomes.com/ut/heber-city/2181-e-signal-peak-ct-lot-771/pid_32077326/

Sinopsis

Latar belakang tulisan ini dibuat ketika Penulis menjumpai sebuah plot data tidak semulus yang dibayangkan yaitu  Projected Integral Image. Data yang secara real didapatkan akan banyak terdapat beberapa gangguan sehingga plot data tersebut tidak semulus apa yang kita harapkan, oleh hal tersebut, maka diperlukan beberapa hal kecil untuk mengubahnya agar lebih smooth. Sebuah plot grafik terkadang dijumpai dalam kondisi yang noise seperti berikut:



Bila dilihat sekilas, maka banyak ‘gerigi’ atau noise yang cukup mengganggu agar bisa dihilangkan, sehingga find peak dapat ditentukan dengan lebih akurat.


Bila dibandingkan dengan data tersebut di ‘smooth’ menggunakan operasi konvolusi berikut ini



Maka hasilnya akan terlihat lebih ‘clear’ serta pencarian peak menjadi lebih presisi, jika kalian ingin mencoba operasi diatas menggunakan kernel gaussian. Kalian bisa menggunakan kode berikut



clc;clear all;close all;
data = load('data.txt');
g = gausswin(30); % <-- this value determines the width of the smoothing window
g = g/sum(g);
data2 = conv(data, g, 'same');
[pks,locs] = findpeaks(data2,1:length(data2),'MinPeakDistance',20,'MinPeakWidth',10);
 
figure()
plot(data2);
xlabel('x','fontsize',18);
xticks([0:50:length(data)+100])
xtickangle(45)
yticks([]);
grid on;
title('Data Sinyal')
hold on;
text(locs+.02,pks,num2str((1:numel(pks))'))



Monday, September 2, 2019

Buku Pengolahan Citra Digital dengan Matlab - Text Line Extraction

Saat ini telah banyak algoritma yang diterapkan untuk meningkatkan akurasi pada kasus text line extraction. Salah satu basic nya adalah integral projection. nah kebetulan penulis sedang kebagian untuk melakukan research tulisan dari daun lontar, dengan menerapkan algoritma morfologi yang tepat, maka text line extraction dapat meningkatkan akurasi yang lebih baik, salah satunya dengan adaptive partial projection technique.
ref:
  1. Rapeeporn Chamchong, Chun Che Fung. 2012 Text Line Extraction Using Adaptive Partial Projection for Palm Leaf Manuscripts from Thailand. 2012 International Conference on Frontiers in Handwriting Recognition