• Tidak ada hasil yang ditemukan

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM

4.7. Pengujian Korelasi Variabel

4.7.1. Pengujian Korelasi Variabel Pearson Correlation

Pada bagian ini, dilakukan pengujian dependent variabel terhadap independent variabel dengan menggunakan pearson correlation. Pearson Correlation merupakan salah satu metode yang cukup sering digunakan dalam menguji korelasi variabel yang digunakan dalam proses training dan testing oleh suatu model Machine Learning terhadap suatu dataset.

Gambar 4.21. Hasil Pengujian Korelasi Variabel dengan menggunakan Pearson Correlation

Pada gambar 4.21. terdapat tabel hasil pengujian korelasi variabel pada data mahasiswa dengan menggunakan pearson correlation.

65

Gambar 4.22. Grafik Hasil Korelasi Variabel dengan menggunakan Pearson Correlation

Pada gambar 4.22. terdapat visualisasi data mengenai korelasi variabel dari data mahasiswa dengan menggunakan pearson correlation.

4.7.2. Pengujian Korelasi Variabel dengan Spearman Correlation

Pada bagian ini, dilakukan pengujian variabel terhadap variabel lainna dengan menggunakan spearman correlation. Spearman Correlation merupakan salah satu metode yang cukup sering digunakan dalam pengujian korelasi variabel yang digunakan dalam proses training dan testing oleh suatu model Machine Learning terhadap suatu dataset.

66

Gambar 4.23. Hasil Pengujian Korelasi Variabel dengan menggunakan Spearman Correlation

Pada gambar 4.23. terdapat tabel hasil pengujian korelasi variabel dengan menggunakan spearman correlation.

Gambar 4.24. Grafik Hasil Korelasi Variabel dengan menggunakan Spearman Correlation

Pada gambar 4.24. terdapat visualisasi data mengenai hasil korelasi variabel dengan menggunakan spearman correlation.

BAB 5

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Pada tahap pengujian, analisis dan perancangan dari sistem prediksi prestasi mahasiswa dengan menggunakan dataset mahasiswa Universitas Sumatera Utara dengan membandingkan k-Nearest Neighbors dan Naive Bayes serta membandingkan korelasi variabel dengan menggunakan Spearman Correlation dan Pearson Correlation. Maka, dapat disimpulkan sebagai berikut:

1. Model k-Nearest Neighbors dengan k bernilai 8 mencapai akurasi tertinggi dengan memvalidasi menggunakan metrics accuracy mencapai 55,45% sedangkan menggunakan metrics 10 fold Cross Validaion mencapai 56% dengan nilai k bernilai 36, 37, 38 dan 40 pada pengujian nilai k dari antara nilai 1 hingga 40.

2. Model Naive Bayes antara lain Gaussian Bayes, Multinominal Bayes dan Bernoulli Bayes yang dapat menghasilkan akurasi dengan menggunakan metrics accuracy dengan nilai 48,51% pada model Gaussian Bayes, 39,6% pada model Mutinominal Bayes dan 40,26% pada model Bernoulli Bayes. Sedangkan dengan menggunakan 10 fold Cross Validation menghasilkan nilai akurasi yang sama yaitu mencapai 54,26%.

3. Dengan menggunakan Pearson Correlation didapatkan bahwa variabel nama program studi dengan variabel Indeks Prestasi Semester yang memiliki korelasi variabel menghasilkan nilai tertinggi kedua sebesar 0.25

4. Dengan menggunakan Spearman Correlation didapatkan bahwa variabel Indeks Prestasi Semester dengan variabel jenis kelamin menghasilkan nilai tertinggi kedua sebesar 0.23.

5. Proses ekstraksi fitur dapat membuang variabel-variabel yang tidak diperlukan yang dapat mempengaruhi akurasi dari proses training, testing dan hasil yang didapatkan..

6. Sistem prediksi prestasi mahasiswa dapat digunakan untuk pihak Universitas Sumatera Utara untuk memprediksi prestasi mahasiswa dengan baik.

67

68

5.2. Saran

Dari hasil penelitian ini, didapatkan beberapa saran yang dapat dipertimbangkan untuk penelitian selanjutanya, antara lain:

1. Memperbanyak dataset yang digunakan karena dapat mempengaruhi akurasi, precision, recall, f-score serta korelasi variabel yang digunakan.

2. Menggunakan hyperparameter tuning dalam proses training dan testing sehingga mendapatkan akurasi yang lebih maksimal.

3. Memperbanyak dan menggunakan variabel yang lebih beragam untuk mendapatkan akurasi dan korelasi variabel yang lebih maksimal, seperti golongan Satuan Pembangunan Per-Semester, jarak tempuh, prestasi non-akademik yang dimiliki tiap mahasiswa hingga profesi/pekerjaan mahasiswa.

4. Sebaiknya menggunakan model regresi seperti Regresi Linear dan Decision Tree dimana model regresi lebih tepat dalam memprediksi daripada model klasifikasi.

5. Untuk pertimbangan dalam pengembangan selanjutnya, diharapkan dapat memprediksi hal-hal lain, seperti kelayakan diberikan beasiswa, penentuan biaya Satuan Pembangunan Per-Semester hingga lama masa studi yang mungkin ditempuh oleh mahasiswa.

6. Sebagai pertimbangan dalam pengembangan selanjutnya, agar menggunakan dataset yang pembaharuan datanya secara otomatis.

69

DAFTAR PUSTAKA

Alpaydin, Ethem. 2010. Introduction to Machine Learning. Second Edition. The MIT Press:

Cambridge, Massachusetts.

Artaye, Ketut. 2015. Implementation of Naive Bayes Classifier Method to Predict Graduation Time of IBI Darmajaya Scholar. International Conference on Information Technology and Business, 1-2.

Bonaccorso, Giuseppe. 2017. Machine Learning Algorithm. Packt: Birmingham-Mumbai.

Budiharto, Widodo. 2016. Machine Learning & Computational Intelligence. Penerbit Andi:

Yogyakarta.

Cormen, Thomas H. dkk. 2009. Introduction to Algorithm Third Edition. The MIT Press:

United States of America.

Guido, Sarah. & Andreas C. Muller. 2017. Introduction to Machine Learning with Python.

O’Reilly Media: United States of America.

Hunt, John. 2019. A Begineers Guide to Python 3 Programming. Springer: United Kingdom.

Hurwitz, Judith. & Daniel Kirsch. 2018. Machine Learning for Dummies. IBM Limited Edition: United States of America.

Igual, Laura & Santi Segui. 2017. Introduction to Data Science. Springer: Spanyol.

Kataria, Aman. & M. D. Singh. 2013. A Review of Data Classification Using K-Nearest

70

Neighbors Algorithm. International Journal of emerging Technology and Advanced Engineering, Vol. 3, Issue 6, June 2013, 1-7.

Kubat, Miroslav. 2017. An Introduction to Machiine Learning Second Edition. Springer:

University of Miami, United State of America.

Muhardi & Eka Sabna, 2016. Penerapan Data Mining untuk Memprediksi Prestasi Akademik Mahasiswa Berdasarkan Dosen, Motivasi, Kedisiplinan dan Hasil Belajar. Journal CoreIT. Vol. 2, No. 2, Desember 2016.

Mustakim & Giantika Oktaviani F. 2016. Algoritma K-Nearest Neighbor Classification Sebagai Sistem Prediksi Predikat Prestasi Mahasiswa. Jurnal Sains, Teknologi dan Industri, Vol. 3, Issue 6, Juni 2013, 1-7.

Osmanbegovic, Edin & Mirza Suijic, 2012. Data Mining Approach for Predicting Student Performance. Journal of Economics and Business, Vol. 10, Issue 1, pp. 3 – 12.

Safri, Yofi Firdan, Riza Arifudin, Much Aziz Muslim. 2018. K-Nearest Neighbor and Naive Bayes Classifier Algorithm in Determining the Classification of Healthy Card Indonesia Giving to the Poor. Scientific Journal of Informatics, Vol. 5, No. 1 May 2018, 1 1-10.

S. Skiena, Steven. 2017. The Data Science Design Manual. Springer: United States of America

Wiyono, Slamet. & Taufiq Abiddin. 2019. Comparative Study of Machine Learning KNN, SVM, and Decision Tree Algorithm to Predict Students Performance Internatinoal Journal of Research – Granthaalayah. Vol. 7, Iss.1. January 2019, 1 – 7.

VanderPlas, Jake. 2017. Python Data Science Handbook. O’Reilly Media: United States of America.

71

Wesley. 2019. Implementasi Machine Learning pada Sistem Pendeteksi Situs yang Bermuatan Konten Negatif [skripsi]. Medan (ID) : Universitas Sumatera Utara.

LAMPIRAN 1 : LISTING PROGRAM

k-Nearest Neighbors

A-1

from __future__ import print_function, division import numpy as np

import math class KNN():

""" K Nearest Neighbors classifier.

Parameters:

def _vote(self, neighbor_labels):

""" Membalikkan nilai dari kelompok yang paling dominan"""

counts = np.bincount(neighbor_labels.astype('int')) return counts.argmax()

def euclidean_distance(x1, x2):

""" Menghitung jarak antar dua instance"""

distance = 0

for i in range(len(x1)):

distance += pow((x1[i] - x2[i]), 2) return math.sqrt(distance)

def predict(self, X_test, X_train, y_train):

y_pred = np.empty(X_test.shape[0])

for i, test_sample in enumerate(X_test):

idx = np.argsort([euclidean_distance(test_sample, x) for x in X_train])[:self.k]

k_nearest_neighbors = np.array([y_train[i] for i in idx])

y_pred[i] = self._vote(k_nearest_neighbors) return y_pred

A-2

Naive Bayes

from __future__ import division, print_function import numpy as np

import math

class NaiveBayes():

"""The Gaussian Naive Bayes classifier. """

def accuracy_score(y_true, y_pred):

""" Bandingkan y_true ke y_pred dan dapatkan akurasi """

accuracy = np.sum(y_true == y_pred, axis=0) /

def train_test_split(X, y, test_size=0.3, shuffle=True, seed=None): def _calculate_likelihood(self, mean, var, x):

""" Tingkat kemiripan data """

A-3

def _calculate_prior(self, c):

"""Hitung kelas sebelumnya (sampel dimana kelas = c / jumlah sample“””

frequency = np.mean(self.y == c) return frequency

def _classify(self, sample):

""" Klasifikasi dengan aturan bayes"""

posteriors = []

for i, c in enumerate(self.classes):

posterior = self._calculate_prior(c) for feature_value, params in zip(sample, self.parameters[i]):

likelihood =

self._calculate_likelihood(params["mean"], params["var"], feature_value)

posterior *= likelihood posteriors.append(posterior)

return self.classes[np.argmax(posteriors)]

def predict(self, X):

""" Prediksi kelas label sample terhadap X """

y_pred = [self._classify(sample) for sample in X]

return y_pred

A-4

k-Nearest Neighbors, Naive Bayes, Korelasi Variable dengan Google Colab

//connect dataset to google drive from google.colab import drive from scipy.stats import mode import os

drive.mount('/content/gdrive') path = "gdrive/MyDrive/Dataset/"

//import library import numpy as np

import matplotlib as plt import pandas as pd import scipy

from sklearn.metrics import accuracy_score, confusion_matrix, clas sification_report

from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier from sklearn.naive_bayes import GaussianNB

from sklearn.naive_bayes import MultinomialNB from sklearn.naive_bayes import BernoulliNB from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt

import seaborn as sns

from sklearn import model_selection

from sklearn.model_selection import train_test_split from scipy import stats

df = pd.read_csv(path+"data_mahasiswa.csv") df.head()

//data visualization

df['Nama Program Studi'].value_counts().plot.bar(figsize=(6, 6), t itle='Nama Program Studi', label='')

df['Jenis Kelamin'].value_counts().plot.bar(figsize=(6, 6), title=

'Jenis Kelamin', label='')

df['Jalur Masuk'].value_counts().plot.bar(figsize=(6, 6), title='J alur Masuk', label='')

ip_range= [0, 1.0, 2.0, 3.0, 4.0]

plt.hist(df['IP Semester'].values, bins=ip_range, edgecolor="k") plt.title("Indeks Prestasi Semester")

plt.xticks(ip_range)

ip_range= [0, 1.0, 2.0, 3.0, 4.0]

plt.hist(df['IP Kumulatif'].values, bins=ip_range, edgecolor="k") plt.title("Indeks Prestasi Kumulatif")

plt.xticks(ip_range)

df['Status'].value_counts().plot.bar(figsize=(6, 6), title='Status Mahasiswa', label='')

df['Daerah Asal'].value_counts(sort=True).nlargest(10).plot.bar(ti tle='Asal Daerah Berdasarkan Urutan Terbesar', label='')

A-5

//data preprocessing

df['Jenis Kelamin'] = df['Jenis Kelamin'].astype('category') df['Jalur Masuk'] = df['Jalur Masuk'].astype('category')

df['Nama Program Studi'] = df['Nama Program Studi'].astype('categor y')

df['Status'] = df['Status'].astype('category')

df['Daerah Asal'] = df['Daerah Asal'].astype('category') del df['NIM']

del df['IP Kumulatif']

df['Jenis Kelamin'] = df['Jenis Kelamin'].cat.codes

df['Nama Program Studi'] = df['Nama Program Studi'].cat.codes df['Jalur Masuk'] = df['Jalur Masuk'].cat.codes

df['Daerah Asal'] = df['Daerah Asal'].cat.codes df['Status'] = df['Status'].cat.codes

//confusion matrix k-nearest neighbors x = df.iloc[:, :5].values

y = df.iloc[:, 5].values

X_train, X_test, Y_train, Y_test = train_test_split(x, y, test_size

=0.3, random_state = 42, shuffle=False) knn = KNeighborsClassifier()

knn.fit(X_train, Y_train) Y_pred = knn.predict(X_test) ax = plt.axes()

conf = confusion_matrix(Y_test, Y_pred)

sns.heatmap(conf, cmap='BrBG', fmt='d', annot=True)

ax.set_title('Hasil Confusion Matrix dengan menggunakan k-Nearest Neighbors')

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size

=0.3, random_state = 42, shuffle=False)

#default n_neighbors = 5 knn = KNeighborsClassifier() knn.fit(x_train, y_train) y_pred = knn.predict(x_test)

akurasi = accuracy_score(y_test, y_pred)

print("Nilai Akurasi dengan menggunakan Metric Accuracy ", round(ak urasi * 100, 2))

cv = model_selection.cross_val_score(knn, x, y, cv=10)

print("Nilai Akurasi dengan menggunakan 10 fold Cross Validation :

", round(cv.mean() * 100, 2))

A-5

//k-nearest neighbors with k = 1 to 40 and using metric accuracy neighbors = 41

train_accuracy = np.empty(neighbors) test_accuracy = np.empty(neighbors) x = df.iloc[:, :5].values

y = df.iloc[:, 5].values

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.3, random_state = 42, shuffle=False) data = []

for i in range(1, 41):

knn = KNeighborsClassifier(n_neighbors=i) knn.fit(x_train, y_train)

y_pred = knn.predict(x_test)

akurasi = accuracy_score(y_test, y_pred) data.append(round(akurasi * 100, 2))

plt.figure(figsize=(12, 6))

plt.plot(range(1, 41), data, color='red', linestyle='dashed', marker

='o', markerfacecolor='blue', markersize=10)

plt.title('Hasil Akurasi menggunakan Metrics Akurasi') plt.xlabel('Nilai K')

plt.ylabel('Nilai Akurasi')

//k-nearest neighbors with k = 1 to 40 and using metric 10 fold cross validation

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.3, random_state = 42, shuffle=False) data = []

for i in range(1, 41):

knn = KNeighborsClassifier(n_neighbors=i)

cv = model_selection.cross_val_score(knn, x, y, cv=10, scoring='ac curacy')

akurasi = round(cv.mean(), 2)

data.append(round(akurasi * 100, 2))

plt.figure(figsize=(12, 6))

plt.plot(range(1, 41), data, color='red', linestyle='dashed', marker

='o', markerfacecolor='blue', markersize=10)

plt.title('Hasil Akurasi menggunakan 10 fold Cross Validation') plt.xlabel('Nilai K')

plt.ylabel('Nilai Akurasi')

A-6

// split data train and testing. Split independent variable and dependent variable

x = df.iloc[:, :6].values y = df.iloc[:, 6].values

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.3, random_state = 42, shuffle=False)

// gaussian bayes with metrics accuracy and 10 fold cross validation naive_bayes = GaussianNB()

cv_naivebayes = model_selection.cross_val_score(naive_bayes, x, y, c v=10)

naive_bayes.fit(x_train, y_train) y_pred = naive_bayes.predict(x_test) print("Gaussian Bayes")

print("Hasil Akurasi dengan menggunakan

10-fold Cross Validation : ",round(cv_naivebayes.mean() * 100, 2)) print("Hasil Akurasi dengan menggunakan Metrics Accuracy : ", round(

accuracy_score(y_test, y_pred) * 100, 2)) conf = confusion_matrix(y_test, y_pred) ax = plt.axes()

sns.heatmap(conf, cmap='BrBG', fmt='d', annot=True)

ax.set_title('Hasil Confusion Matrix dengan menggunakan Gaussian Bay es')

ax.set(xlabel='Predicted', ylabel='True Label') plt.show()

// multinominal bayes with metrics accuracy and 10 fold cross validation

multinominal = MultinomialNB()

cv_multinominal = model_selection.cross_val_score(naive_bayes, x, y, cv=10)

multinominal.fit(x_train, y_train) y_preds = multinominal.predict(x_test) print("Multinominal Bayes")

print('Hasil Akurasi dengan menggunakan

10-fold Cross Validation : ', round(cv_multinominal.mean() * 100, 2 )) print('Hasil Akurasi dengan menggunakan Metrics Accuracy : ', round(

accuracy_score(y_test, y_preds) * 100, 2)) akurasi = accuracy_score(y_test, y_preds)

print('Hasil Akurasi dengan menggunakan Metrics Accuracy : ', round(

akurasi * 100, 2))

conf = confusion_matrix(y_test, y_preds) ax = plt.axes()

sns.heatmap(conf, cmap='BrBG', fmt='d', annot=True)

ax.set_title('Hasil Confusion Matrix dengan menggunakan Multinominal Bayes')

A-7

cv_bernoulli = model_selection.cross_val_score(naive_bayes, x, y, c v=10)

y_predict = bernoulli.predict(x_test) print("Bernoulli Bayes")

print("Hasil Akurasi dengan menggunakan 10

fold Cross Validation : ", round(cv_bernoulli.mean() * 100, 2)) akurasi = accuracy_score(y_test, y_predict)

print('Hasil Akurasi dengan menggunakan Metrics Accuracy : ', round (akurasi * 100, 2))

conf = confusion_matrix(y_test, y_predict) ax = plt.axes()

sns.heatmap(conf, cmap='BrBG', fmt='d', annot=True)

ax.set_title('Hasil Confusion Matrix dengan menggunakan Bernoulli B ayes')

ax.set(xlabel='Predicted', ylabel='True Label') plt.show()

// korelasi variable dengan pearson correlation ax = plt.axes()

sns.heatmap(pearson, cmap='BrBG', ax = ax, fmt=".2f", annot=True) ax.set_title('Korelasi Variabel dengan menggunakan Pearson Correlat ion')

plt.show()

// korelasi variable dengan spearman correlation ax = plt.axes()

sns.heatmap(spearman, cmap='BrBG', ax = ax, fmt=".2f", annot=True) ax.set_title('Korelasi Variabel dengan menggunakan Spearman Correla tion')

plt.show()

Curriculum Vitae

Tentang Saya

Nama : Eddy

Tempat/Tanggal Lahir : Binjai/24 September 1996

Alamat : Jalan K.L. Yos Sudarso 16N Medan Alamat Email : [email protected]

Nomor Telepon : (+62) 81264405445

Github : https://www.github.com/EddyHu71 LinkedIn : https://www.linkedin.com/in/eddy-hu/

Kaggle : https://www.kaggle.com/eddyhu71 Pendidikan

Universitas Sumatera Utara, Medan 2014 - 2021

Jurusan : Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi Sertifikasi : Adobe Certified Associate, Microsoft Technology Associate Kursus yang diikuti : Game Development, Mobile Development, Deep Learning, Data

Structure and Algorithm, Flutter, Data Science dan Machine Learning Keahlian : C++, Python, C#, Dart, PHP, Android, JavaScript, Adobe XD,

nodeJS Pengalaman Bekerja

Software Developer, Fulltime On-Site Sep 2021 - Sekarang PT. CODE DEVELOPMENT

Deskripsi Pekerjaan:.

1. Mengembangkan aplikasi mobile dengan Flutter.

2. Membangun dan maintain konsep aplikasi sesuai timeline dan arahan.

3. Menyelesaikan task-task pembuatan aplikasi tepat waktu.

Full Stack Developer, Freelance On-Site Juli 2020 - Sekarang Evolution Prime Digital

Deskripsi Pekerjaan:

4. Melakukan negosiasi dan mengembangkan konsep aplikasi kepada klien.

5. Mengembangkan aplikasi mobile dengan menggunakan Flutter dengan mengimplementasikan Scoped Model sebagai state management pada Front End dan Back End menggunakan PHP native.

6. Mengembangkan aplikasi website dengan menggunakan PHP, JavaScript, CSS3, HTML5 dan Bootstrap 4.

7. Mengimplementasikan tampilan aplikasi mobile dan aplikasi website dengan menggunakan Adobe XD.

Full Stack Developer, Freelance On-Site Agustus 2018 – Mei 2020 CV. Gurita Digital Virtual

Deskripsi Pekerjaan:

1. Mengembangkan aplikasi mobile dengan menggunakan Flutter dengan mengimplementasikan ScopedModel sebagai state management pada Front End dan Back End menggunakan PHP native.

2. Mengembangkan aplikasi website dengan menggunakan PHP, JavaScript, CSS3, HTML5 dan Bootstrap 4.

IT Support, FullTime Onsite Maret 2017 – Februari 2018 PT. Industrindo Maju Mandiri

Deskripsi Pekerjaan:

1. Melakukan instalasi CCTV dan melakukan maintenance.

2. Melakukan pemantauan/mengatur proyek desain interior kantor atau rumah.

English Teacher, PartTime Onsite Juli 2016 – Februari 2017 Intensive Language Service

Deskripsi Pekerjaan:

1. Mengajar siswa Sekolah Dasar mengenai Vocabulary.

2. Mengajar siswa Sekolah Menengah Pertama mengenai Vocabulary dan Grammar.

Kegiatan Sukarelawan

Junior Machine Learning di Omdena Regional Malaysia dan RegionalSingapore Juni 2021 – sekarang

Kegiatan yang dilakukan:

1. Mengembangkan proyek machine learning secara tim dengan tim Malaysia dan tim Singapore.

2. Menyelesaikan isu-isu atau permasalahan-permasalahan yang nyata dengan Machine Learning.

3. Menyelesaikan project dengan tepat waktu dan benar.

Penasehat di Bangkit Academy Machine Learning Google, Inc.

Februari 2021 – Juni 2021 Kegiatan yang dilakukan:

4. Memfasilitasi modul online

5. Mereview dan Mengembangkan kurikulum Bangkit Academy Machine Learning.

6. Mereview Project Akhir dari tiap pembelajaran

Ketua di Developer Student Clubs Universitas Sumatera Utara, Medan Google South East Asia, Inc.

March 2018 – April 2019 Kegiatan yang dilakukan:

1. Mengadakan Flutter Workshop.

a. Mengajarkan konsep UI/UX dalam penerapan di aplikasi mobile.

b. Mengajarkan cara mengintegrasikan API.

2. Mengadakan Game Development Workshop.

a. Mengajarkan konsep pengembangan game dengan menggunakan Unity3D.

3. Mengadakan Cloud Study Jam Workshop.

a. Mengajarkan konsep Cloud dengan Google Cloud Platform.

b. Mengajarkan penggunaan Google Cloud Platform.

Anggota di Divisi Riset dan Teknologi PEMA Fasilkom-TI USU Universitas Sumatera Utara

September 2016 – Januari 2018 Kegiatan yang dilakukan:

1. Memberikan solusi kepada lingkungan sekitar dalam penerapan teknologi.

2. Melakukan pengabdian kepada masyarakat.

Dokumen terkait