ANALISIS DATASET MOBILE PRICE METODE KNN

Anggita Sondang Pasaribu

Sosial Media


0 orang menyukai ini
Suka

Summary

Menganalisis dataset mobile price menggunakan metode K-Nearest Neighbors.

Description

ANALISIS DATASET MOBILE PRICE MENGGUNAKAN K-NEAREST NEIGHBORS

 

Pengertian KNN

K-Nearest Neighbors (KNN) adalah algoritma machine learning yang digunakan untuk masalah klasifikasi dan regresi. Cara kerja KNN adalah dengan mencari k-nearest neighbors (tetangga terdekat) dari sebuah data baru berdasarkan jarak Euclidean atau jarak Minkowski terhadap data-data pada dataset. Setelah k-nearest neighbors ditemukan, maka data baru tersebut diklasifikasikan sebagai kelas yang paling sering muncul pada tetangga-tetangga tersebut (untuk klasifikasi) atau dihitung nilai rata-rata tetangga-tetangga tersebut (untuk regresi). Dalam menentukan nilai k, bisa dilakukan secara empiris atau melalui cross-validation.

Dataset yang Digunakan

Sumber data : https://www.kaggle.com/datasets/iabhishekofficial/mobile-price-classification?select=train.csv. 

Data tersebut merupakan data perbandingan spesifikasi ponsel terhadap harga jualnya yang bertujuan untuk untuk memprediksi rentang harga ponsel berdasarkan spesifikasinya. Dataset ini terdiri dari satu set data mobileprice.csv yang nantinya akan dibagi menjadi data training dan data testing.

Dataset memiliki 4 kelas target berdasarkan rentang harga :

  • Kelas 0: Harga paling rendah
  • Kelas 1: Harga sedang
  • Kelas 2: Harga sedikit lebih mahal
  • Kelas 3: Harga paling mahal

Proses Algoritma

Import Library

Proses pertama adalah mengimport beberapa library dari scikit-learn yang dibutuhkan untuk membuat model kNN, seperti sklearn.model_selection untuk train_test_split(), sklearn.neighbors untuk KNeighborsClassifier(), dan sklearn.metrics untuk confusion_matrix() dan accuracy_score(). Selain itu, juga diimport library pandas untuk membaca dataset dari file CSV.

Baca & Eksplorasi Data

Proses selanjutnya adalah membaca data dari file CSV menggunakan pd.read_csv(). Data ini akan dipisahkan menjadi data atribut/fitur (X) dan data kelas target (y).

Setelah data diimport, kemudian dilakukan eksplorasi data untuk mendapatkan insight. Dapat dilihat bahwa dataset ini memiliki 2001 entri data dan 21 kolom atribut. Pada deskripsi dataset mobile price, dataset ini memiliki 20 attribut dan 1 class target.

Eksplorasi dengan menampilkan 5 baris teratas pada dataset. Dari preview data diatas, kolom dataset masih dalam bentuk nomor index dan nama atribut masih berada di dalam baris dataset.

Pertama, saya akan melakukan rename pada kolom sesuai atribut dataset.

Selanjutnya saya menghapus baris pertama karena valuenya merupakan nama nama atribut itu sendiri.

Bisa dilihat bahwa kolom pada dataset telah direname dan value sudah sesuai.

Pada list kolom tersebut, bisa dilihat pada bagian Data type masih berupa object. Untuk dapat lanjut ke langkah berikutnya, diperlukan tipe data numeric. Selanjutnya saya akan mengubah tipe datanya sebagai berikut.

Sekarang bisa dilihat tipe data pada setiap kolom sudah menjadi numerik setelah menggunakan fungsi to_numeric.

Kode diatas digunakan untuk melihat apa saja class yang terdapat pada dataset tersebut. dengan menggunakan unique() kita dapat mengetahui bahwa dataset ini mengklasifikasi dalam 4 class.

Kode di atas digunakan melihat nilai yang hilang atau null. Semua value pada dataset tersebut tidak memiliki nilai yang hilang karena bisa dilihat bahwa jumlah nilai null adalah 0.

Setelah eksplorasi data selesai, saatnya untuk memulai membuat model. Langkah pertama, saya membuat variabel khusus untuk dataframe yang berisi atribut/fitur dan target class.

 

Memisahkan Data

Program memisahkan data menjadi atribut (X) dan kelas target (y). Variabel X merupakan sebuah dataframe berisi data-data atribut/fitur, sementara variabel y merupakan sebuah series yang berisi data-data kelas target. memisahkan data traning dan data testing dengan rasio 80:20 dengan random seed 0.

 

Melatih Data Training

Model knn dibuat dan melatih data pada X_train dan y_train.

Setelah data diimport, kemudian dilakukan eksplorasi data untuk mendapatkan insight. Dapat dilihat bahwa dataset ini memiliki 2001 entri data dan 21 kolom atribut. Pada deskripsi dataset mobile price, dataset ini memiliki 20 attribut dan 1 class target.

 

Akurasi

Skor Akurasi

Target class yang telah diprediksi akan dibandingkan dengan target class pada data testing 'y_test' sehingga didapat akurasinya yaitu sebesar 92.75%.

 

Mengubah Nilai K

Pada model sebelumnya, digunakan nilai k sebesar 5. Nilai k tersebut akan coba diganti dengan beberapa nilai yang berbeda untuk mengetahui apakah bisa mendapatkan akurasi yang lebih tinggi. Percobaan pertama, nilai k dibuat sama dengan 6 dan menghasilkan akurasi 93.75%.

Membuat ulang model dengan nilai k = 7, berikut dapat dilihat bahwa skor akurasi mengalami peningkatan menjadi 95.25%.

Membuat ulang model dengan nilai k = 8, pada percobaan menggunakan nilai K=8 skor akurasi mengalami penurunan kembali menjadi sebesar 95%. Jadi untuk perhitungan selanjutnya saya akan menggunakan model dengan nilai k=7.

 

Confussion Matrix

Confusion matrix juga dibuat menggunakan confusion_matrix() dengan parameter y_test dan y_pred_7. Confusion matrix digunakan untuk mengetahui jumlah prediksi yang benar dan salah pada setiap kelas target.

Visualisasi

 

Menghitung TP, FP, dan FN Perclass

Sebelum menghitung, saya mengasumsikan 4 class yang bernilai 0 sampai 3 akan saya ubah menjadi huruf untuk mempermudah.

  • a: class 0
  • b: class 1
  • c: class 2
  • d: class 3

 

Menghitung Precission

Precission 

Precision mengukur sejauh mana prediksi positif yang diberikan oleh model benar. Precision didefinisikan sebagai rasio antara jumlah prediksi positif yang benar (true positive) dengan jumlah total prediksi positif (true positive + false positive). Precision memberikan gambaran tentang seberapa akurat model dalam mengklasifikasikan contoh sebagai positif.



Recall

Recall (atau juga dikenal sebagai sensitivitas) mengukur sejauh mana model mampu mengklasifikasikan contoh positif secara keseluruhan. Recall didefinisikan sebagai rasio antara jumlah prediksi positif yang benar (true positive) dengan jumlah total contoh yang sebenarnya positif (true positive + false negative). Recall memberikan gambaran tentang seberapa baik model dalam menemukan contoh-contoh positif yang ada.

 

Kesimpulan

  1. Pada projek ini saya membuat model klasifikasi mobile price dengan metode k Nearest Neighbour dengan nilai k=7 dan menghasilkan performa yang baik dengan nilai akurasi sebesar 95.25%
  2. Setelah membuat ulang model dengan nilai k yang berbeda, nilai k=5 sampai k=7 selalu menghasilkan peningkatan akurasi model, namun pada nilai k=8 hasil akurasi model kembali menurun.
  3. Model dengan nilai k=7 menghasilkan akurasi yang paling tinggi dibanding nilai k yang lainnya.
  4. Dari nilai confussion matrix, telah dihitung precission dan recall. precission yang didapat sebesar 0.9521 atau 95.21% dan recal yang didapat sebesar 0.9523 atau 95.24%. Hal ini menunjukkan performa model yang dibuat sudah cukup baik.

Informasi Course Terkait
  Kategori: Data Science / Big Data
  Course: Machine Learning For Beginner