# memasukkan library tensorflow untuk membuat model MultiLayer
import tensorflow as t # memasukkan library numpy untuk membuat array multi dimensi import numpy as np # menambahkan model sequential from tensorflow.keras.models import Sequential # menambahkan top layer flat from tensorflow.keras.layers import Flatten # menambahkan top layer padat from tensorflow.keras.layers import Dense # menambahkan top layer aktivasi from tensorflow.keras.layers import Activation # memasukkan library matplot untuk visualisasi data import matplotlib.pyplot as pt
# konvert dataset dari integer menjadi floating-point 32-bit
x_train = x_train.astype ('float32') # konvert dataset dari integer menjadi floating-point 32-bit x_test = x_test.astype('float32')
# Untuk normalisasi nilai pixel dibagi dengan 255
gray_scale=255 # nilai x_train dibagi dengan gray_scale x_train = x_train/gray_scale # nilai x_test dibagi dengan gray_scale x_test = x_test/gray_scale
# untuk mencetak input training
print("Input train:", x_train.shape) # untuk mencetak input testing print("Input test:", x_test.shape) # untuk mencetak target training print("Target train:", y_train.shape) # untuk mencetak target testing print("Target test:", y_test.shape) # fig adalah grafik, ax adalah axis. # menggambar subplot 5x5 fig, ax = pt.subplots(5, 5, figsize=(12, 12)) # memberi nilai awal k = 0 # perulangan i for i in range(5): # perulangan j for j in range(5): ax[i][j].imshow(x_train[k].reshape(28, 28), aspect='auto') k = k + 1 # untuk memunculkan plot pt.show()
# memodelkan MLP sequential
model_MLP = Sequential([ # reshape 28 row * 28 column data to 28*28 rows # memberi ukuran posisi flat Flatten(input_shape=(28, 28)), # hidden layer 1 Dense(700, activation='sigmoid'), # hidden layer 2 Dense(100, activation='sigmoid'), # output layer Dense(10, activation='sigmoid'), ])
# optimizer adalah nilai optimisasi testing menggunakan algoritma adam
# loss adalah perintah yang digunakan untuk menghitung perbedaan nilai inp ut dengan output # metrics adalah persentase jumlah data yang diprediksi secara benar terha dap keseluruhan data model_MLP.compile(optimizer='adam', loss='sparse_categorical_crossentropy' , metrics=['accuracy'])
# epoch adalah hyperparameter yang menentukan berpa kali algoritma bekerja
melewati seluruh dataset baik secara forward maupun backward # batch_size adalah jumlah total sampel data training # validation_split: melakukan validasi sederhana dengan membagi dataset se cara acak menjadi dua data terpisah — data training & data testing history = model_MLP.fit(x_train, y_train, epochs=10, batch_size=2000, vali dation_split=0.2) # menentukan window untuk grafik pt.figure(figsize=(16,10)) # membuat multiple plots yang memiliki weight dan height yang sama. pt.subplot(2,2,1) # membuat plot dari hasil 'accuracy' pt.plot(history.history['accuracy']) # membuat plot dari hasil 'accuracy' pt.plot(history.history['val_accuracy']) pt.ylim(0, 1) # memberi judul plot pt.title('model accuracy') # memberi label sumbu y 'accuracy' pt.ylabel('accuracy') # memberi label sumbu x 'epoch' pt.xlabel('epoch') # membuat label data dalam sebuah plot pt.legend(['train', 'valid'], loc='lower right') # membuat multiple plots yang memiliki weight dan height yang sama. pt.subplot(2,2,2) # membuat plot dari hasil 'loss' pt.plot(history.history['loss']) # membuat plot dari hasil 'val_loss' pt.plot(history.history['val_loss']) # memberi judul plot pt.title('model loss') # memberi label sumbu y 'loss' pt.ylabel('loss') # memberi label sumbu x 'epoch' pt.xlabel('epoch') # membuat label data dalam sebuah plot pt.legend(['train', 'valid'], loc='upper right') pt.ylim([0,2])
#confusion_matrix untuk mengevaluasi akurasi klasifikasi
#classification_report untuk membuat laporan teks yang menunjukkan metrik klasifikasi utama. from sklearn.metrics import confusion_matrix, classification_report y_pred = model_MLP.predict(x_test) # argmax mencari label terbesar 0.2[0]; 0.3[1]; 0.5[2]; 0.33[3] = 2 y_pred = np.argmax(y_pred, axis=1) print("===========================Confusion Matrix======================== ====") # mencetak evalusasi akurasi klasifikasi print(confusion_matrix(y_test,y_pred)) print("==============Classification Report=============") # mencetak laporan teks yang menunjukkan metrik klasifikasi utama, y testi ng dan y prediksi print(classification_report(y_test, y_pred))
# mengatur figure dan axis
# subplots 5 vertical, 5 horizontal # figsize : mengatur ukuran gambar fig, ax = pt.subplots(5, 5, figsize=(12, 12)) k = 0 for i in range(5): for j in range(5): # menambahkan teks pada axis # fontsize : ukuran teks # color : warna teks ax[i][j].text(0, 10, y_pred[k], fontsize=40, color='red') # aspect : mengatur rasio secara otomatis ax[i][j].imshow(x_test[k].reshape(28, 28), aspect='auto') k = k + 1 # memunculkan plot pt.show()
Kode Program Ini Adalah Sebuah Fungsi Python Yang Disusun Untuk Memeriksa Apakah Simbol Saham Yang Dimasukkan Oleh Pengguna Terdapat Dalam File CSV Yang Disediakan