Kamis, 25 Mei 2017

Control Random Generator in Matlab

Jika kamu menggunakan Matlab untuk melakukan komputasi tidak terlepas kita membutuhkan bilangan random, tapi ini menjadi masalah tersendiri jika terdapat hasil yang berbeda-beda setiap kali melakukan proses komputasi.
Biasanya ini terjadi ketika kamu menggunakan algoritma machine learning yang melibatkan bilangan random sebagai initial valuenya. Bagaimana kita harus membuat menjadi tetap?
Saya gunakan contoh kmeans clustering berikut




clc;clear all;close all;
load fisheriris
X = meas(:,3:4);
 
figure;
plot(X(:,1),X(:,2),'k*','MarkerSize',5);
title 'Fisher''s Iris Data';
xlabel 'Petal Lengths (cm)';
ylabel 'Petal Widths (cm)';
 
%kita akan menggunakan kmeans untuk melakukan
%clustering
[idx,C] = kmeans(X,3);
hold on
for i =1:3
    text(C(i,1),C(i,2),num2str(i),'FontSize',30,'Color','B')
end 

Coba kamu perhatikan urutan angka berikut

Pasti akan menghasilkan urutan yang berbeda-beda, oleh karena itu kita harus menetapkan terlebih dahulu seed random generator yaitu dengan function rand(‘seed’,0) yang artinya bilangan random akan menggunakan seed/benih 0 sebagai nilai awalnya, kamu bebas menggunakan 0 – 9999.

Coba kamu perbaiki codenya menjadi berikut

clc;clear all;close all;
load fisheriris
X = meas(:,3:4);
 
figure;
plot(X(:,1),X(:,2),'k*','MarkerSize',5);
title 'Fisher''s Iris Data';
xlabel 'Petal Lengths (cm)';
ylabel 'Petal Widths (cm)';
 
%kita akan menggunakan kmeans untuk melakukan
%clustering
rand('seed',0) %seed nya diisi 0
[idx,C] = kmeans(X,3);
hold on
for i =1:3
    text(C(i,1),C(i,2),num2str(i),'FontSize',30,'Color','B')
end 
Maka hasil urutannya akan senantiasa sama.

http://www.softscients.web.id/2015/11/pembangkitan-bilangan-random-dengan.html
Posting Komentar