Anda di halaman 1dari 4

Nama = Muhammad Azzam Imsaki

Nim = 20220120204
Kelas = B

# 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

# mendownload dataset daru cloud


(x_train, y_train), (x_test, y_test) = t.keras.datasets.mnist.load_data()

# 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()

Anda mungkin juga menyukai