Pengacakan Dataset
Sinopsis
Pengacakan dataset secara random sangat perlu dilakukan agar proses pelatihan pada suatu algoritma machine learning menjadi robust. Karena ada suatu pertanyaan yang diajukan via email seperti berikut
Dear Mulkan Syarif
saya mau bertanya masalah akurasi. apakah loss atau nilai error mempengaruhi akurasi?? kalau secara logika error/ loss kecil akurasi pasti tinggi. namun pada kenyataan pada eksperimen yang dilakukan, kadang ada nilai loss/error besar namun akurasinya tinggi. itu bagaimana ya pak??
Terima kasih
Jawab
seharusnya berbanding terbalik
error kecil
akurasi tinggi
Untuk itu yang diacak adalah susunan baris saja, seperti berikut kode nya
data sebelum diacak [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12] [13 14 15] [16 17 18] [19 20 21] [22 23 24] [25 26 27] [28 29 30]] diacak [[ 16. 17. 18.] [ 10. 11. 12.] [ 19. 20. 21.] [ 7. 8. 9.] [ 13. 14. 15.] [ 28. 29. 30.] [ 4. 5. 6.] [ 22. 23. 24.] [ 25. 26. 27.] [ 1. 2. 3.]]
Kebetulan code yang dibuat sedari awal adalan python, berikut code lengkapnya
import numpy as np def acakdata(data,no_seed=None): np.random.seed(seed=no_seed) #atur seed #Sort array by nth column in Numpy #https://gist.github.com/stevenvo/e3dad127598842459b68 s1 = np.zeros((len(data),1)) #membuat dummy s2 = np.round(np.random.uniform(1,len(data),len(data)),0) s1[:,0] = s2 data2 = np.hstack((data,s1)) #tambahkan pada baris terakhir data2 = data2[data2[:,data2.shape[1]-1].argsort()] #urutkan berdasarkan baris terakhir return data2[:,0:data2.shape[1]-1] data = np.arange(1,31,1) data = np.reshape(data,(10,3)) print('\ndata sebelum diacak\n',data,'\n\n diacak \n') print(acakdata(data,no_seed=None))
Dikarenakan cukup berpengaruh terhadap proses pelatihan