HASIL DAN PEMBAHASAN
A. Preprocessing Information
Pada tahap ini, dilakukan prepocessing knowledge yang merupakan langkah awal untuk mempersiapkan knowledge sebelum digunakan dalam analisis lebih lanjut, Pada tahap ini dilakukan pemeriksaan kesesuaian tipe knowledge masing-masing variabel. Penting dilakukan identifikasi ini karena tipe knowledge mempengaruhi cara knowledge diolah, termasuk pemilihan metode analisis statistik yang sesuai. Berikut ini merupakan hasil dari identifikasi dataset.
df.dtypes
Selanjutnya, dilakukan proses pembersihan knowledge dengan cara memeriksa konsistensi format knowledge, duplikasi knowledge, nilai lacking worth, dan outlier. Pada dataset yang digunakan, format knowledge untuk semua variabel sudah konsisten, serta bebas dari duplikasi dan lacking worth. Akan tetapi, pada beberapa variabel terdapat knowledge outlier yaitu pada variable age, seperti yang terlihat pada plot berikut.
variables = ['Age', 'Height', 'Weight', 'BMI']plt.determine(figsize=(15, 10))
sns.boxplot(knowledge=knowledge[variables], palette = 'Set2')
plt.xlabel('Values')
plt.title('Boxplots for A number of Variables')
plt.xticks(rotation=45, ha='proper')
plt.grid(True)
plt.present()
Outlier diatasi dengan menghapusnya, karena knowledge hanya mengandung sedikit outlier. Setelah proses penghapusan outlier pada variabel yang relevan, langkah selanjutnya adalah melakukan standarisasi untuk menyamakan skala knowledge semua variabel. Tujuannya adalah agar knowledge yang digunakan dalam pemodelan, dapat mengklasifikasikan knowledge dengan lebih akurat.
B. Analisis Eksplorasi Information
Pada tahap ini dilakukan Analisis Eksplorasi Information untuk mengetahui informasi terkait knowledge yang digunakan. Analisis eksplorasi knowledge ini penting untuk dilakukan dalam penelitian untuk memahami karakteristik, pola, dan struktur dataset sebelum melakukan pemodelan atau analisis lebih lanjut. Dari hasil analisis ini knowledge yang digunakan memiliki lima fiture predictor dengan empat diantaranya variabel numeric dan satu variabel kategorik serta satu fiture goal yang terdiri dari empat kategori dengan distribusi regular weight sebanyak 29, overweight sebanyak 12, obese sebanyak 20 dan underweight sebanyak 47. Selanjutnya dilihat deskriptif knowledge yang menunjukkan distribusi variabel-variabel dalam dataset analisis ini.
knowledge.describe()
Statistik deskriptif dapat dilihat dalam tabel berikut.
Berdasarkan ringkasan statistik dalam tabel, dapat dilihat dataset ini terdiri dari 108 individu setalah melalui proses pre-proessing. Median usia 42,5 tahun, menunjukkan distribusi yang sedikit miring ke kanan. Median tinggi badan adalah 175 cm, menunjukkan distribusi yang condong ke kiri. Median berat badan 55 kg, menunjukkan distribusi yang condong ke kanan. Median BMI 21,2, menunjukkan distribusi yang relatif simetris. Berat badan memiliki deviasi standar tertinggi relatif terhadap rata-ratanya, menunjukkan variabilitas yang tinggi. BMI juga menunjukkan deviasi standar yang signifikan, mencerminkan variasi dalam komposisi tubuh.
fig, axes = plt.subplots(2, 2, figsize=(14, 10))#Histogram masing-masing variabel
sns.histplot(knowledge, x='Age', kde=True, ax=axes[0, 0])
axes[0, 0].set_title('Distribusi Usia')
sns.histplot(knowledge, x='Weight', kde=True, ax=axes[0, 1])
axes[0, 1].set_title('Distribusi Berat Badan')
sns.histplot(knowledge, x='Peak', kde=True, ax=axes[1, 0])
axes[1, 0].set_title('Distribusi Tinggi Badan')
sns.histplot(knowledge, x='BMI', kde=True, ax=axes[1, 1])
axes[1, 1].set_title('Distribusi BMI')
plt.tight_layout()
plt.present()
Beberapa hal yang potensial termasuk berat badan minimal 10 kg dan BMI minimal 3,9, yang mungkin menunjukkan kesalahan knowledge atau malnutrisi parah. Usia maksimum 112 tahun juga sangat tinggi dan mungkin memerlukan verifikasi. Selain itu perlu untuk melihat korelasi antar variable suatu dataset.
numeric = knowledge.select_dtypes(exclude='object')
corr_matrix = numeric.corr()plt.determine(figsize=(8, 6))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', cbar=True, linewidths=0.5)
plt.title('Korelasi Heatmap')
plt.present()
Korelasi variable yang digunakan ditunjukkan dengan heatmap berikut.
Berdasarkan heatmap korelasi terlihat, terdapat korelasi positif yang sangat kuat (0,97) antara berat badan dan BMI. Usia memiliki korelasi positif sedang (0,47) dengan berat badan dan BMI, namun menunjukkan korelasi negatif yang sangat lemah (-0,077) dengan tinggi badan, menunjukkan sedikit penurunan tinggi badan seiring bertambahnya usia dalam sampel ini. Usia dan tinggi badan tampaknya merupakan variabel yang paling independen, dengan korelasi sangat kecil di antara keduanya. Dalam proses membentuk mannequin prediktif, penting untuk mempertimbangkan interaksi antara variabel, terutama usia, berat badan, dan tinggi badan, untuk memprediksi atau mengklasifikasikan obesitas secara akurat.
C. Analisis Klasifikasi
Selanjutnya, dilakukan klasifikasi menggunakan metode Regresi Logistik, Resolution Tree, Random Forest, SVC, dan KNN. Digunakan grid search masing-masing metode untuk mendapatkan kombinasi parameter maupun hyperparameter yang paling optimum untuk algoritma klasifikasi.
- Regresi Logistik
# Inisialisasi mannequin Regresi Logistik
logreg = LogisticRegression(max_iter=1000)# Menentukan parameter grid untuk GridSearchCV
param_grid = {
'penalty': ['l1', 'l2'],
'C': [0.001, 0.01, 0.1, 1.0, 10.0],
'solver': ['liblinear']
}
# Inisialisasi Stratified Ok-Fold Cross Validation
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
# Inisialisasi GridSearchCV
grid_search = GridSearchCV(estimator=logreg, param_grid=param_grid, cv=skf, scoring='accuracy', n_jobs=-1)
# Melatih mannequin dengan GridSearchCV
grid_search.match(X_train, y_train)
# Menampilkan parameter terbaik
print("Finest parameters:", grid_search.best_params_)
print("Finest cross-validation rating: {:.2f}".format(grid_search.best_score_))
# Menggunakan estimator terbaik untuk prediksi
best_logreg = grid_search.best_estimator_
y_pred_lr = best_logreg.predict(X_test)
y_score = best_logreg.predict_proba(X_test)
# Menghitung metrik
accuracy = accuracy_score(y_test, y_pred_lr)
precision = precision_score(y_test, y_pred_lr, common='weighted')
recall = recall_score(y_test, y_pred_lr, common='weighted')
f1 = f1_score(y_test, y_pred_lr, common='weighted')
roc_auc = roc_auc_score(label_binarize(y_test, lessons=[0, 1, 2, 3]), y_score, common='micro')
# Menampilkan metrik
print(f"Accuracy: {accuracy:.2f}")
print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1-score: {f1:.2f}")
print(f"ROC AUC: {roc_auc:.2f}")
# Menampilkan confusion matrix dan classification report
print("Confusion Matrix:n", confusion_matrix(y_test, y_pred_lr))
print("Classification Report:n", classification_report(y_test, y_pred_lr))
# Plotting ROC Curve
y_test_binarized = label_binarize(y_test, lessons=[0, 1, 2, 3])
fpr, tpr, _ = roc_curve(y_test_binarized.ravel(), y_score.ravel())
roc_auc = auc(fpr, tpr)
plt.determine(figsize=(8, 6))
plt.plot(fpr, tpr, colour='blue', lw=2, label='ROC curve (space = {0:0.2f})'.format(roc_auc))
plt.plot([0, 1], [0, 1], colour='grey', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Optimistic Charge')
plt.ylabel('True Optimistic Charge')
plt.title('Receiver Working Attribute (ROC)')
plt.legend(loc="decrease proper")
plt.present()
Pada klasifikasi Regresi Logistik dilakukan uji coba beberapa kombinasi parameter yaitu parameter C adalah 0.001, 0.01, 0.1, 1, dan 10. Untuk parameter penalty adalah l1 dan l2, sedangkan untuk parameter solver adalah liblinear. Kemudian dilakukan tunning parameter dan didapatkan parameter terbaik mannequin Regresi Logistik yaitu nilai C adalah 10, penalty adalah l1, dan slovernya adalah liblinear. Dengan nilai parameter tersebut, didapatkan nilai akurasi sebesar 0.88. Nilai tersebut menunjukkan bahwa 88% dari prediksi mannequin pada knowledge uji adalah benar. Namun, akurasi saja tidak cukup untuk mengevaluasi kinerja mannequin, terutama pada dataset yang tidak seimbang. Oleh karena itu, digunakan nilai ROC AUC untuk evaluasi mannequin yang lebih baik. Berikut merupakan grafik ROC AUC pada metode Regresi Logistik.
Nilai AUC sebesar 0.98 menunjukkan bahwa mannequin memiliki kemampuan yang sangat baik dalam membedakan antara kelas-kelas yang berbeda.
2. Resolution Tree
# Inisialisasi mannequin Resolution Tree
dt = DecisionTreeClassifier()# Menentukan parameter grid untuk GridSearchCV
param_grid = {
'criterion': ['gini', 'entropy'],
'max_depth': [None, 10, 20, 30, 40, 50],
'min_samples_split': [2, 5, 10],
'min_samples_leaf': [1, 2, 4]
}
# Inisialisasi Stratified Ok-Fold Cross Validation
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
# Inisialisasi GridSearchCV
grid_search = GridSearchCV(estimator=dt, param_grid=param_grid, cv=skf, scoring='accuracy', n_jobs=-1)
# Melatih mannequin dengan GridSearchCV
grid_search.match(X_train, y_train)
# Menampilkan parameter terbaik
print("Finest parameters:", grid_search.best_params_)
print("Finest cross-validation rating: {:.2f}".format(grid_search.best_score_))
# Menggunakan estimator terbaik untuk prediksi
best_dt = grid_search.best_estimator_
y_pred_dt = best_dt.predict(X_test)
y_score = best_dt.predict_proba(X_test)
# Menghitung metrik
accuracy = accuracy_score(y_test, y_pred_dt)
precision = precision_score(y_test, y_pred_dt, common='weighted')
recall = recall_score(y_test, y_pred_dt, common='weighted')
f1 = f1_score(y_test, y_pred_dt, common='weighted')
roc_auc = roc_auc_score(label_binarize(y_test, lessons=[0, 1, 2, 3]), y_score, common='micro')
# Menampilkan metrik
print(f"Accuracy: {accuracy:.2f}")
print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1-score: {f1:.2f}")
print(f"ROC AUC: {roc_auc:.2f}")
# Menampilkan confusion matrix dan classification report
print("Confusion Matrix:n", confusion_matrix(y_test, y_pred_dt))
print("Classification Report:n", classification_report(y_test, y_pred_dt))
# Plotting ROC Curve
y_test_binarized = label_binarize(y_test, lessons=[0, 1, 2, 3])
fpr, tpr, _ = roc_curve(y_test_binarized.ravel(), y_score.ravel())
roc_auc = auc(fpr, tpr)
plt.determine(figsize=(8, 6))
plt.plot(fpr, tpr, colour='blue', lw=2, label='ROC curve (space = {0:0.2f})'.format(roc_auc))
plt.plot([0, 1], [0, 1], colour='grey', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Optimistic Charge')
plt.ylabel('True Optimistic Charge')
plt.title('Receiver Working Attribute (ROC)')
plt.legend(loc="decrease proper")
plt.present()
Pada klasifikasi Resolution Tree dilakukan uji coba beberapa kombinasi parameter yaitu parameter criterion adalah gini dan entropy dan untuk parameter max depth adalah None, 10, 20, 30, 40, dan 50. Sedangkan untuk parameter min samples break up adalah 2, 5, dan 10 lalu untuk parameter min samples leaf adalah 1, 2, dan 4. Kemudian dilakukan tunning parameter dan didapatkan parameter terbaik mannequin Resolution Tree yaitu nilai nilai criterion: gini, max depth: none, min samples leaf: 4, min samples break up: 2. Dengan nilai parameter tersebut, didapatkan nilai akurasi sebesar 0.88 yang menunjukkan bahwa 88% dari prediksi mannequin pada knowledge uji adalah benar. Hal ini berarti mannequin mampu mengklasifikasikan knowledge dengan benar dalam 88% dari semua kasus yang diuji. Berikut merupakan grafik ROC AUC pada metode Resolution Tree.
Nilai AUC sebesar 0.91 menunjukkan bahwa mannequin memiliki kemampuan yang sangat baik dalam membedakan antara kelas-kelas yang berbeda.
3. Random Forest
# Inisialisasi mannequin Random Forest
rf = RandomForestClassifier()# Menentukan parameter grid untuk GridSearchCV
param_grid = {
'n_estimators': [50, 100, 150],
'max_features': ['sqrt', 'log2'],
'max_depth': [None, 20, 30],
'min_samples_split': [3, 5, 10],
'min_samples_leaf': [3, 4, 5]
}
# Inisialisasi Stratified Ok-Fold Cross Validation
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
# Inisialisasi GridSearchCV
grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=skf, scoring='accuracy', n_jobs=-1)
# Melatih mannequin dengan GridSearchCV
grid_search.match(X_train, y_train)
# Menampilkan parameter terbaik
print("Finest parameters:", grid_search.best_params_)
print("Finest cross-validation rating: {:.2f}".format(grid_search.best_score_))
# Menggunakan estimator terbaik untuk prediksi
best_rf = grid_search.best_estimator_
y_pred_rf = best_rf.predict(X_test)
y_score = best_rf.predict_proba(X_test)
# Menghitung metrik
accuracy = accuracy_score(y_test, y_pred_rf)
precision = precision_score(y_test, y_pred_rf, common='weighted')
recall = recall_score(y_test, y_pred_rf, common='weighted')
f1 = f1_score(y_test, y_pred_rf, common='weighted')
roc_auc = roc_auc_score(label_binarize(y_test, lessons=[0, 1, 2, 3]), y_score, common='micro')
# Menampilkan metrik
print(f"Accuracy: {accuracy:.2f}")
print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1-score: {f1:.2f}")
print(f"ROC AUC: {roc_auc:.2f}")
# Menampilkan confusion matrix dan classification report
print("Confusion Matrix:n", confusion_matrix(y_test, y_pred_rf))
print("Classification Report:n", classification_report(y_test, y_pred_rf))
# Plotting ROC Curve
y_test_binarized = label_binarize(y_test, lessons=[0, 1, 2, 3])
fpr, tpr, _ = roc_curve(y_test_binarized.ravel(), y_score.ravel())
roc_auc = auc(fpr, tpr)
plt.determine(figsize=(8, 6))
plt.plot(fpr, tpr, colour='blue', lw=2, label='ROC curve (space = {0:0.2f})'.format(roc_auc))
plt.plot([0, 1], [0, 1], colour='grey', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Optimistic Charge')
plt.ylabel('True Optimistic Charge')
plt.title('Receiver Working Attribute (ROC)')
plt.legend(loc="decrease proper")
plt.present()
Pada klasifikasi Random Forest dilakukan uji coba beberapa kombinasi parameter yaitu parameter criterion adalah gini dan entropy dan untuk parameter max depth adalah None, 10, 20, 30, 40, dan 50. Sedangkan untuk parameter min samples break up adalah 2, 5, dan 10 lalu untuk parameter min samples leaf adalah 1, 2, dan 4. Kemudian dilakukan tunning parameter dan didapatkan parameter terbaik mannequin Random Forest yaitu nilai nilai criterion: gini, max depth: none, min samples leaf: 4, min samples break up: 2. Dengan nilai parameter tersebut, didapatkan nilai akurasi sebesar 1.00 yang menunjukkan bahwa mannequin mampu mengklasifikasikan setiap occasion dalam knowledge uji dengan benar. Ini adalah hasil yang sangat excellent dan menunjukkan bahwa mannequin tidak membuat kesalahan klasifikasi. Berikut merupakan grafik ROC AUC pada metode Random Forest.
Nilai AUC sebesar 1.00 menunjukkan bahwa mannequin memiliki kemampuan yang sempurna dalam membedakan antara kelas-kelas yang berbeda. AUC 1.00 menunjukkan bahwa mannequin selalu memberikan probabilitas tertinggi untuk kelas positif yang benar.
4. Assist Vector Classifier (SVC)
# Inisialisasi mannequin SVC
svc = SVC(chance=True)# Menentukan parameter grid untuk GridSearchCV
param_grid = {
'C': [0.1, 1, 10, 15],
'kernel': ['linear', 'rbf', 'poly'],
'diploma': [3, 4, 5]
}
# Inisialisasi Stratified Ok-Fold Cross Validation
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
# Inisialisasi GridSearchCV
grid_search = GridSearchCV(estimator=svc, param_grid=param_grid, cv=skf, scoring='accuracy', n_jobs=-1)
# Melatih mannequin dengan GridSearchCV
grid_search.match(X_train, y_train)
# Menampilkan parameter terbaik
print("Finest parameters:", grid_search.best_params_)
print("Finest cross-validation rating: {:.2f}".format(grid_search.best_score_))
# Menggunakan estimator terbaik untuk prediksi
best_svc = grid_search.best_estimator_
y_pred_svc = best_svc.predict(X_test)
y_score = best_svc.predict_proba(X_test)
# Menghitung metrik
accuracy = accuracy_score(y_test, y_pred_svc)
precision = precision_score(y_test, y_pred_svc, common='weighted')
recall = recall_score(y_test, y_pred_svc, common='weighted')
f1 = f1_score(y_test, y_pred_svc, common='weighted')
roc_auc = roc_auc_score(label_binarize(y_test, lessons=[0, 1, 2, 3]), y_score, common='micro')
# Menampilkan metrik
print(f"Accuracy: {accuracy:.2f}")
print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1-score: {f1:.2f}")
print(f"ROC AUC: {roc_auc:.2f}")
# Menampilkan confusion matrix dan classification report
print("Confusion Matrix:n", confusion_matrix(y_test, y_pred_svc))
print("Classification Report:n", classification_report(y_test, y_pred_svc))
# Plotting ROC Curve
y_test_binarized = label_binarize(y_test, lessons=[0, 1, 2, 3])
fpr, tpr, _ = roc_curve(y_test_binarized.ravel(), y_score.ravel())
roc_auc = auc(fpr, tpr)
plt.determine(figsize=(8, 6))
plt.plot(fpr, tpr, colour='blue', lw=2, label='ROC curve (space = {0:0.2f})'.format(roc_auc))
plt.plot([0, 1], [0, 1], colour='grey', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Optimistic Charge')
plt.ylabel('True Optimistic Charge')
plt.title('Receiver Working Attribute (ROC)')
plt.legend(loc="decrease proper")
plt.present()
Pada klasifikasi Assist Vector Classifier (SVC) dilakukan uji coba beberapa kombinasi parameter yaitu parameter C adalah 0.1, 1, 10, dan 15. Parameter kernel adalah linear, rbf, dan poly. Sedangkan untuk parameter diploma adalah 3, 4, dan 5. Kemudian dilakukan tunning parameter dan didapatkan parameter terbaik mannequin SVC yaitu nilai nilai C: 15, kernel: linear, diploma: 3. Dengan nilai parameter tersebut, didapatkan nilai akurasi sebesar 0.94 yang menunjukkan bahwa 94% dari prediksi mannequin pada knowledge uji adalah benar. Hal ini menunjukkan hasil yang sangat baik dan mannequin memiliki kinerja yang kuat dalam mengklasifikasikan knowledge dengan benar. Berikut merupakan grafik ROC AUC pada metode SVC.
Nilai AUC sebesar 0.99 menunjukkan bahwa mannequin memiliki kemampuan yang sangat baik dalam membedakan antara kelas-kelas yang berbeda.
5. okay — Nearest Neighbors (k-NN)
# Inisialisasi mannequin KNN
knn = KNeighborsClassifier()# Menentukan parameter grid untuk GridSearchCV
param_grid = {
'n_neighbors': [3, 5, 7, 9],
'weights': ['uniform', 'distance'],
'metric': ['euclidean', 'manhattan']
}
# Inisialisasi Stratified Ok-Fold Cross Validation
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
# Inisialisasi GridSearchCV
grid_search = GridSearchCV(estimator=knn, param_grid=param_grid, cv=skf, scoring='accuracy', n_jobs=-1)
# Melatih mannequin dengan GridSearchCV
grid_search.match(X_train, y_train)
# Menampilkan parameter terbaik
print("Finest parameters:", grid_search.best_params_)
print("Finest cross-validation rating: {:.2f}".format(grid_search.best_score_))
# Menggunakan estimator terbaik untuk prediksi
best_knn = grid_search.best_estimator_
y_pred_knn = best_knn.predict(X_test)
y_score = best_knn.predict_proba(X_test)
# Menghitung metrik
accuracy = accuracy_score(y_test, y_pred_knn)
precision = precision_score(y_test, y_pred_knn, common='weighted')
recall = recall_score(y_test, y_pred_knn, common='weighted')
f1 = f1_score(y_test, y_pred_knn, common='weighted')
roc_auc = roc_auc_score(label_binarize(y_test, lessons=[0, 1, 2, 3]), y_score, common='micro')
# Menampilkan metrik
print(f"Accuracy: {accuracy:.2f}")
print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1-score: {f1:.2f}")
print(f"ROC AUC: {roc_auc:.2f}")
# Menampilkan confusion matrix dan classification report
print("Confusion Matrix:n", confusion_matrix(y_test, y_pred_knn))
print("Classification Report:n", classification_report(y_test, y_pred_knn))
# Plotting ROC Curve
y_test_binarized = label_binarize(y_test, lessons=[0, 1, 2, 3])
fpr, tpr, _ = roc_curve(y_test_binarized.ravel(), y_score.ravel())
roc_auc = auc(fpr, tpr)
plt.determine(figsize=(8, 6))
plt.plot(fpr, tpr, colour='blue', lw=2, label='ROC curve (space = {0:0.2f})'.format(roc_auc))
plt.plot([0, 1], [0, 1], colour='grey', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Optimistic Charge')
plt.ylabel('True Optimistic Charge')
plt.title('Receiver Working Attribute (ROC)')
plt.legend(loc="decrease proper")
plt.present()
Pada klasifikasi okay — Nearest Neighbors (k-NN) dilakukan uji coba beberapa kombinasi parameter yaitu parameter n neighbors adalah 3, 5, 7, dan 9. Parameter weights adalah uniform dan distance. Sedangkan untuk parameter metric adalah euclidean dan manhattan. Kemudian dilakukan tunning parameter dan didapatkan parameter terbaik mannequin KNN yaitu nilai nilai n neighbors: 5, weights: uniform, metric: manhattan. Dengan nilai parameter tersebut, didapatkan nilai akurasi sebesar 0.91 yang menunjukkan bahwa 91% dari prediksi mannequin pada knowledge uji adalah benar. Hal ini menunjukkan hasil yang sangat baik dan mannequin memiliki kinerja yang kuat dalam mengklasifikasikan knowledge dengan benar. Berikut merupakan grafik ROC AUC pada metode KNN.
Nilai AUC sebesar 0.99 menunjukkan bahwa mannequin memiliki kemampuan yang sangat baik dalam membedakan antara kelas-kelas yang berbeda.
D. Perbandingan Metode Klasifikasi Terbaik
Hasil klasifikasi untuk jumlah knowledge imbalance pada kelas obesitas dapat dievaluasi menggunakan nilai skor ROC AUC. Skor ROC AUC untuk uji coba pada masing-masing metode dapat dilihat pada Tabel di bawah.
Berdasarkan tabel di atas, terlihat bahwa nilai AUC tertinggi yaitu pada metode Random Forest. Sehingga metode klasifikasi terbaik yaitu metode Random Forest.