From 53e90284644d1e361f87d450b3d1767abd9e5616 Mon Sep 17 00:00:00 2001 From: slowy07 Date: Sat, 15 Apr 2023 13:47:48 +0700 Subject: [PATCH 1/2] feat: menambahkan fungsi skoring --- .../artificial_intelligence/fungsi_skoring.py | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 implementation/artificial_intelligence/fungsi_skoring.py diff --git a/implementation/artificial_intelligence/fungsi_skoring.py b/implementation/artificial_intelligence/fungsi_skoring.py new file mode 100644 index 00000000..796bab39 --- /dev/null +++ b/implementation/artificial_intelligence/fungsi_skoring.py @@ -0,0 +1,97 @@ +# implementasi dari fungsi skoring +# untuk mengkalkulasikan perbedaan antara +# value yang terprediksi dengan value yang aktual +# terdapat juga mode dari: +# - MAE (mean absolute error) +# menghitung perbedaan mutlak rata-rata antara +# dua vektor numerik +# - RMSE (root mean squared error) +# untuk mengukur seberapa jauh nilai observasi +# dalam analisis regresi +# - MSE (mean squared error) +# fungsi untuk mengukur square error +# - RMSLE (root mean square logarithmic error) +# menambahkan satu ke aktual sebelum mengambil +# nilai logaritma natural untuk menghindari +# catching log natural nilai nol + +import numpy as np + + +def fungsi_mae(prediksi: list, nilai_aktual: list) -> float: + """ + >>> nilai_aktual = [1,2,3] + >>> prediksi = [1, 4, 3] + >>> np.around(fungsi_mae(prediksi, nilai_aktual), decimals=2) + 0.67 + """ + prediksi = np.array(prediksi) + nilai_aktual = np.array(nilai_aktual) + perbedaan = abs(prediksi - nilai_aktual) + hasil = perbedaan.mean() + return hasil + + +def fungsi_mse(prediksi: list, nilai_aktual: list) -> float: + """ + >>> nilai_aktual = [1, 1, 1] + >>> prediksi = [1, 1, 1] + >>> fungsi_mse(prediksi, nilai_aktual) + 0.0 + """ + prediksi = np.array(prediksi) + nilai_aktual = np.array(nilai_aktual) + perbedaan = prediksi - nilai_aktual + root_diff = np.square(perbedaan) + hasil = root_diff.mean() + return hasil + + +def fungsi_rmse(prediksi: list, nilai_aktual: list) -> float: + """ + >>> nilai_aktual = [1, 2, 3] + >>> prediksi = [1, 4, 3] + >>> np.around(fungsi_rmse(prediksi, nilai_aktual), decimals=2) + 1.15 + """ + prediksi = np.array(prediksi) + nilai_aktual = np.array(nilai_aktual) + perbedaan = prediksi - nilai_aktual + root_diff = np.square(perbedaan) + mean_square_diff = root_diff.mean() + hasil = np.sqrt(mean_square_diff) + return hasil + + +def fungsi_rmsle(prediksi: list, nilai_aktual: list) -> float: + """ + >>> nilai_aktual = [10, 10, 30] + >>> prediksi = [10, 2, 30] + >>> np.around(fungsi_rmsle(prediksi, nilai_aktual), decimals = 2) + 0.75 + """ + prediksi = np.array(prediksi) + nilai_aktual = np.array(nilai_aktual) + prediksi_log = np.log(prediksi + 1) + nilai_log_aktual = np.log(nilai_aktual + 1) + perbedaan = prediksi_log - nilai_log_aktual + square_diff = np.square(perbedaan) + mean_square_diff = square_diff.mean() + hasil = np.sqrt(mean_square_diff) + return hasil + + +def fungsi_mbd(prediksi: list, nilai_aktual: list) -> float: + prediksi = np.array(prediksi) + nilai_aktual = np.array(nilai_aktual) + perbedaan = prediksi - nilai_aktual + numerator = np.sum(perbedaan) / len(prediksi) + denumerator = np.sum(nilai_aktual) / len(prediksi) + hasil = float(numerator) / denumerator * 100 + return hasil + + +if __name__ == "__main__": + import doctest + + doctest.testmod(verbose=True) From f5edb2e4ad98f7261cd860154ea496e02f9b1f4f Mon Sep 17 00:00:00 2001 From: github-actions Date: Sat, 15 Apr 2023 06:48:18 +0000 Subject: [PATCH 2/2] update DIRECTORY.md --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index f66d6624..40de3f7d 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -148,6 +148,7 @@ ## Implementation * Artificial Intelligence * [Decision Tree](https://github.com/bellshade/Python/blob/main/implementation/artificial_intelligence/decision_tree.py) + * [Fungsi Skoring](https://github.com/bellshade/Python/blob/main/implementation/artificial_intelligence/fungsi_skoring.py) * [Gradient Descent](https://github.com/bellshade/Python/blob/main/implementation/artificial_intelligence/gradient_descent.py) * [K Means Clutser](https://github.com/bellshade/Python/blob/main/implementation/artificial_intelligence/k_means_clutser.py) * [K Nearest Neighbour](https://github.com/bellshade/Python/blob/main/implementation/artificial_intelligence/k_nearest_neighbour.py)