Coder Social home page Coder Social logo

hafidh561 / stroke-prediction Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 0.0 458 KB

Memprediksi penyakit stroke dengan beberapa masukkan data yang diperlukan

Jupyter Notebook 100.00%
python jupyter-notebook sklearn random-forest decision-trees logistic-regression naive-bayes svm machine-learning stroke

stroke-prediction's Introduction

Stroke Predicition

Domain Proyek

Stroke adalah sebuah penyakit yang telah menjadi momok bagi masyarakat luas. Meskipun stroke sudah lama dikenal oleh masyarakat tetapi kita masih susah dalam mengetahui kapan dan di mana kita akan mendapati penyakit stroke. Menurut Organisasi Kesehatan Dunia (WHO) stroke adalah penyebab kematian ke-2 secara global dan bertanggung jawab atas sekitar 11% dari total kematian tersebut.

ss0

Dengan adanya machine learning ini, diharapkan kita dapat mengetahui apakah kita mendapati penyakit tersebut atau tidak. Dengan memasukkan beberapa parameter seperti gender, usia, penyakit, dll.

Business Understanding

Problem Statements

Stroke sering kali melanda manusia kapan pun dan di mana pun. Stroke sendiri adalah penyakit yang sulit kali untuk diprediksi oleh manusia. Apakah dengan bantuan machine learning, kita bisa memprediksi adanya penyakit stroke tersebut?

Goals

Tujuan dari projek ini adalah untuk memprediksi apakah pasien tersebut mendapati penyakit stroke atau tidak dengan dengan memasukkan beberapa parameter yang sudah tersedia.

Solution statements

Solusi kali ini adalah dengan menggunakan machine learning, diharapkan manusia dapat mengetahui apakah dia sedang terjangkit stroke atau tidak. Saya akan menggunakan lima metode machine learning yaitu:

  • Support Vector Machine
    Support Vector Machine adalah algoritma machine learning yang memungkinkan kita memprediksi suatu masukkan dengan cara dengan memasukkan konsep kernel pada ruang berdimensi tinggi. Kernel disini maksudnya layaknya membagi setiap koloni dengan menarik garis pemisah antara kelas satu dan kelas lainnya.

    ss12

  • Naive Baiyes
    Naive Baiyes adalah algoritma machine learning yang memungkinkan kita memprediksi suatu masukkan dengan cara dengan menghitung peluang dari satu kelas dari masing-masing kelompok atribut yang ada dan memntukan kelas mana yang paling optimal.

    ss13

  • Decision Tree
    Decision Tree adalah algoritma machine learning yang memungkinkan kita memprediksi suatu masukkan dengan cara dimulai dengan satu node kemudian node tersebut bercabang untuk menyatakan pilihan-pilihan yang ada.

    ss14

  • Logistic Regression
    Logistic Regression adalah algoritma machine learning yang memungkinkan kita memprediksi suatu masukkan dengan cara mencari hubungan antara fitur (input) diskrit dengan probabilitas hasil output diskrit tertentu.

    ss15

  • Random Forest
    Random Forest adalah algoritma machine learning yang memungkinkan kita memprediksi suatu masukkan dengan cara dengan berawal dari memecah data sampel yang ada kedalam decision tree secara acak.

    ss16

Data Understanding

Dataset ini saya ambil dari situs kaggle yang berjudul Stroke Predicition Dataset. Dataset ini dibuat oleh seseorang dengan nama fedesoriano dan sudah diunggah ke situs kaggle mulai bulan februari 2021. Dalam dataset tersebut terdapat beberapa fitur, diantaranya adalah:

  1. id: Untuk identifikasi setiap pasien.

  2. gender: Kelamin dari pasien yaitu "Male", "Female" atau "Other".

    ss1

    ss17

  3. age: Umur dari pasien.

    ss8

  4. hypertension: 0 jika pasien tidak punya hipertensi, 1 jika pasien punya hipertensi.

    ss6

    ss22

  5. heart_disease: 0 jika pasien tidak punya serangan jantung, 1 jika pasien punya serangan jantung.

    ss7

    ss23

  6. ever_married: Apakah pasien sudah menikah? "No" atau "Yes".

    ss2

    ss18

  7. work_type: Tipe pekerjaan pasien yaitu "children", "Govt_jov", "Never_worked", "Private" atau "Self-employed".

    ss3

    ss19

  8. Residence_type: Tempat tinggal pasien yaitu "Rural" atau "Urban".

    ss4

    ss20

  9. avg_glucose_level: rata-rata nilai gula dalam darah.

    ss9

  10. bmi: Index massa tubuh.

    ss10

  11. smoking_status: Status merokoknya yaitu "formerly smoked", "never smoked", "smokes" atau "Unknown".

    Note: Unknown disini data tersebut tidak tersedia pada pasien

    ss5

    ss21

  12. stroke: 1 jika pasien punya stroke atau 0 jika pasien tidak punya stroke.

    ss11

Data Preparation

  1. Pertama saya rubah semua nama kolom menjadi huruf kecil untuk mempermudah dalam pengerjaan.
  2. Setelah itu, saya hapus daya yang sama dan saya ganti semua kolom data yang kosong dengan rata-rata nilai dari kolom tersebut.
  3. Selanjutnya, saya lakukan adalah menghapus beberapa kolom yang tidak dibutuhkan yaitu id dam avg_glucose_level. Karena kedua tersebut, sangatlah tidak berkorelasi terhadap kolom yang lain.
  4. Setelah itu, saya menghapus outliers data karena outliers data dapat menganggung performa model kita nanti. Karena data tersebut berbeda dari yang lain.
  5. Kita rubah semua kolom kategorikal menjadi kolom numerik, karena model machine learning hanya menerima numerik sebagai masukkan.
  6. Kita standarisasi data tersebut, supaya perbandingan jarak antar kolom satu dengan yang lain tidaklah jauh. Saya menggunakan StandardScaler pada scikit-learn yang memungkinkan standarisasi fitur dengan menghilangkan rata-rata dan penskalaan ke varians unit.
  7. Kita split data kita menjadi data latih dan data tes, supaya model machine learning kita dapat mempelajari data baru yaitu tes, bukan hanya berkutat pada data latih.

Modeling

Disini saya membuat lima model machine learning, yaitu Support Vector Machine, Decision Tree, Naive Baiyes, Logistic Regression, dan Random Forest. Saya menggunakan Support Vector Machine karena model ini seringkali digunakan dalam banyak klasifikasi. Saya menggunakan Naive Baiyes karena model ini dapat menghitung sebuah peluang antara kelas satu dan lainnya, itu dapat memudahkan kita untuk mengetahui komposisinya. Saya menggunakan Logistic Regression karena model ini simpel dan cepat dalam penerapannya tetapi untuk performa modelnya terbilang bagus. Saya menggunakan Random Forest karena model tersebut gabungan dari Decision Tree yang dapat menghilangkan kecenderungan memahami data latih.

Evaluation

Metrik evaluasi adalah sebuah pengukur performa dari model tersebut bagus atau tidaknya. Disini saya menggunakan metrik evaluasi Akurasi, karena metrik tersebut sangatlah cocok dengan permasalahan kali ini. Akurasi adalah metrik yang biasa digunakan untuk model machine learning. Berikut adalah evaluasi model yang telah saya buat.

ss24

ss25

ss26

Bisa dilihat dari diagram diatas, bahwasanya Logistic Regression dan Support Vector Machine memiliki performa yang hampir mirip dalam memprediksi penyakit stroke. Setiap model juga berhasil memprediksi dengan baik.

stroke-prediction's People

Contributors

hafidh561 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.