Praktik Klasifikasi SVM Sederhana

Silvia

Sosial Media


0 orang menyukai ini
Suka

Summary

SVM (Support Vector Machine) adalah salah satu algoritma pembelajaran mesin yang populer dan kuat yang digunakan untuk tugas-tugas klasifikasi dan regresi. Tujuan utama dari SVM adalah untuk menemukan hyperplane terbaik yang memisahkan dua kelas dalam ruang fitur sedemikian rupa sehingga margin dari hyperplane ke titik-titik terdekat dari kedua kelas adalah maksimal. Dalam konteks klasifikasi, hyperplane ini digunakan untuk membagi ruang fitur menjadi dua bagian, mewakili dua kelas yang berbeda.

Description

Berikut adalah beberapa konsep utama dalam SVM:

  • Hyperplane: Merupakan generalisasi dari konsep garis (pada data dua dimensi) atau bidang (pada data tiga dimensi) ke dimensi yang lebih tinggi. Dalam SVM, hyperplane digunakan untuk memisahkan dua kelas.
  • Margin: Margin adalah jarak antara hyperplane dan titik-titik terdekat dari kedua kelas. Tujuan SVM adalah untuk mencari hyperplane yang memiliki margin maksimal.
  • Support Vectors: Support vectors adalah titik-titik dari setiap kelas yang berada paling dekat dengan hyperplane. Mereka penting karena mereka menentukan posisi dan orientasi hyperplane.
  • Kernel: Kernel adalah fungsi matematika yang digunakan untuk menghitung produk titik antara dua vektor dalam ruang fitur. Penggunaan kernel memungkinkan SVM untuk bekerja dengan baik dalam ruang fitur berdimensi tinggi bahkan ketika data tidak linear terpisah secara linier dalam ruang asli.

 

Praktik klasifikasi SVM : 

 

Pemanggilan Library 

  • import pandas as pd: Mengimpor library pandas untuk manipulasi dan analisis data.
  • from sklearn.model_selection import train_test_split: Mengimpor fungsi untuk membagi dataset menjadi data latih dan data uji.
  • from sklearn.svm import SVC: Mengimpor kelas untuk Support Vector Classification.
  • from sklearn.preprocessing import LabelEncoder: Mengimpor encoder untuk mengubah nilai kategorikal menjadi numerik.
  • from sklearn.metrics import classification_report: Mengimpor fungsi untuk menghasilkan laporan evaluasi klasifikasi.

 

Memuat Dataset

  • pd.read_csv("Thyroid Disease.csv"): Membaca file CSV yang berisi data penyakit tiroid ke dalam DataFrame pandas.

 

Persiapan Data 

  • label_encoder = LabelEncoder(): Membuat instance dari LabelEncoder.
  • label_encoder.fit_transform(): Menerapkan encoding label untuk mengubah nilai kategorikal menjadi nilai numerik. Proses ini dilakukan untuk setiap kolom kategorikal dalam dataset.

 

Menentukan Fitur (X) dan Target (y)

  • X = dataset.drop(columns=['Response']): Menghapus kolom 'Response' dari dataset untuk mendapatkan fitur.
  • y = dataset['Response']: Mengambil kolom 'Response' sebagai target atau label yang akan diprediksi.

 

Pembagian Data Latih dan Data Uji

  • train_test_split(): Membagi dataset menjadi data latih dan data uji. Parameter test_size=0.2 berarti 20% dari data digunakan sebagai data uji dan 80% sebagai data latih. Parameter random_state=42 memastikan hasil pembagian yang sama setiap kali kode dijalankan untuk reproduktibilitas.

 

Pembuatan Model SVM 

  • SVC(kernel='linear', C=1.0): Membuat instance dari SVM dengan kernel linear dan parameter regulasi C=1.0.

 

Pelatihan Model 

  • svm_model.fit(X_train, y_train): Melatih model SVM menggunakan data latih X_train dan y_train.

 

Evaluasi Model 

  • from sklearn.metrics import confusion_matrix: Mengimpor confusion_matrix dari scikit-learn. confusion_matrix digunakan untuk menghitung confusion matrix.
  • y_pred = svm_model.predict(X_test): Menggunakan model SVM yang telah dilatih (svm_model) untuk memprediksi label kelas dari data uji (X_test). Hasil prediksi disimpan dalam variabel y_pred.
  • print(classification_report(y_test, y_pred)): Menampilkan laporan klasifikasi yang mencakup metrik-metrik kinerja seperti precision, recall, F1-score, dan support untuk setiap kelas. y_test adalah label sebenarnya dari data uji, dan y_pred adalah label prediksi dari model.
  • conf_matrix = confusion_matrix(y_test, y_pred): Menghitung confusion matrix menggunakan label sebenarnya (y_test) dan label prediksi (y_pred). Hasilnya disimpan dalam variabel conf_matrix.
  • print("Confusion Matrix:"): Mencetak teks "Confusion Matrix:" ke konsol untuk menunjukkan bahwa output berikutnya adalah confusion matrix.

 

Hasil Evaluasi Model 

  • Kelas 1 dan kelas 3 diprediksi dengan sangat baik oleh model, dengan precision dan recall yang tinggi.
  • Kelas 0 dan kelas 2 tidak diprediksi dengan baik, dengan precision, recall, dan f1-score yang rendah.
  • Akurasi keseluruhan model adalah 81%, yang cukup baik, tetapi perlu diperbaiki lebih lanjut terutama untuk kelas yang tidak diprediksi dengan baik.

Informasi Course Terkait
  Kategori: Data Science / Big Data
  Course: Machine Learning Dengan Scikit Learn Python