DEV Community

thitipat11
thitipat11

Posted on

การทำนายโรคหัวใจโดยใช้การเรียนรู้ของMachine Learning

การทำนายโรคหัวใจโดยใช้เทคโนโลยีการเรียนรู้ของMachine Learning เป็นกระบวนที่สำคัญในการวินิจฉัยโรคและดูแลสุขภาพของบุคคล โดยเฉพาะในปัจจุบันที่เทคโนโลยีดิจิทัลมีบทบาทสำคัญในทุกด้านของชีวิตประจำวัน เราสามารถใช้ข้อมูลที่มีอยู่เพื่อสร้างแบบจำลองที่สามารถทำนายโรคหัวใจได้อย่างแม่นยำและรวดเร็วขึ้น ซึ่งในโปรเจคนี้เราจะใช้ Google Colab ในการรันโค้ดมาเริ่มกันที่ขั้นตอนแรกกันเลย
1.การนำเข้าไลบรารี

Image description

2. การอ่านข้อมูลจากไฟล์ CSV
ในส่วนนี้ เราจะโหลดไฟล์ heart.csv เข้ามาในmodel โดยชุดข้อมูลนี้นำมาจาก ลิงค์: https://archive.ics.uci.edu/ml/datasets/Heart+Disease ซึ่งเราจะได้ dataset ทั้งหมด 14 collum ได้แก่ age, sex, cp, trestbps, chol, fbs, restecg, thalach, exang, oldpeak, slope, ca, thal, target และจะมี ทั้งหมด 303 row

Image description

ผลลัพท์ :

Image description

หลังจากนำเข้าข้อมูล ตอนนี้ให้เราทำการเชคว่าชุดข้อมูลมีข้อมูลที่ยังว่างหรือไม่มีข้อมูลเหลืออยู่หรือไม่

Image description

ผลลัพท์ :

Image description

จากผลลัพธ์นี้ ข้อมูลของเราไม่มีค่าว่างและค่าที่ซ้ำกัน ดังนั้นข้อมูลชุดนี้จึงสามารถนำมาใช้ในกาวิเคราะห์ต่อไปได้โดยไม่ต้องแก้ไข
3. การวิเคราะห์ข้อมูล
3.1 ต่อมาเราต้องมาวิเคราะห์ตัวแปร "target" ซึ่งเป็นตัวแปรสำคัญ ว่าจะถูกจำแนกด้วยวิธีใด

Image description

ผลลัพท์ :

Image description
จากผลลลัพท์แสดงให้เห็นุถึง ค่าที่ไม่ซ้ำกันของตัวแปร "target" คือ 0 และ 1 ซึ่งแสดงให้เห็นว่าสามารถนำมาจำแนกประเภท โดยใช้ค่าไบนารีได้ โดย 0 แทนหัวใจที่ปกติไม่มีอาการเป็นโรค และ 1 แทนการมีสมบัติของโรคหัวใจ
3.2 หลังจากเราจำแนก target ได้แล้ว จึงมาหาความสัมพันธ์ระหว่าง target และ age, sex, cp, trestbps, chol, fbs, restecg, thalach, exang, oldpeak, slope, ca, thalเพื่อเชคว่าข้อมูลในแต่ละ collum มีความสัมพันธ์กับ target อย่างมีนัยสำคัญหรือไม่ ด้วยการใช้ Exploratory Data Analysis (EDA)

Image description
ผลลัพท์ :

Image description
จากกราฟสามารถวิเคราะห์ได้ว่า

  • เพศ (Sex): หญิงมีโอกาสเป็นโรคหัวใจมากกว่าผู้ชาย

  • ประเภทความเจ็บหน้าอก (Chest Pain Type - CP): ผู้ป่วยที่มีประเภทความเจ็บหน้าอก '0' ซึ่งแทนความเจ็บหน้าอกแบบปกติมีโอกาสเป็นโรคหัวใจน้อยกว่า

  • ผลการตรวจ Electrocardiographic ในระหว่างการพัก (Resting Electrocardiographic Results - restecg): บุคคลที่มีค่า restecg เท่ากับ '1' และ '0' มีโอกาสเป็นโรคหัวใจมากกว่าผู้ที่มี restecg เท่ากับ '2'

  • Angina ที่เกิดจากการออกกำลังกาย (Exercise Induced Angina - exang): ผู้ป่วยที่มี Angina ที่เกิดจากการออกกำลังกาย (exang=1) มีโอกาสเป็นโรคหัวใจน้อยกว่า

  • Slope of the Peak Exercise ST Segment - slope : slope '2' เกี่ยวข้องกับโอกาสเป็นโรคหัวใจสูงกว่าแบบ '0' และ '1'

  • Fluoroscopy (ca): ผู้ป่วยที่มีค่า '4' ของ Fluoroscopy มีจำนวนโรคหัวใจที่น่าแปลกใจมาก
    แสดงให้เห็นว่าตัวแปรในแต่ละCollumส่งผลต่อtargetอย่างมีนัยสำคัญ
    4.Train Test split
    ในขั้นต่อมาเมื่อเราสามารถความสัมพันธ์ระหว่างแค่ละ collum แล้วก็สามารถเข้าสู่การ Train Test split โดยเราจะทำการแบ่งชุดข้อมูลทั้งหมดเป็นชุดฝึกและชุดทดสอบ โดยที่ชุดฝึกมีขนาด 80% และชุดทดสอบมีขนาด 20% เพื่อใช้ชุดฝึกเพื่อฝึกโมเดลของเรา และชุดทดสอบจะมีประโยชน์ในการพยากรณ์ประสิทธิภาพของโมเดล

Image description
5.Algorithm Implementation
ขั้นตอนต่อมาคือการหาอัลกอริทึมที่ดำเนินการได้ดีที่สุดสำหรับชุดข้อมูลนี้ โดยเราได้ใช้ อัลกอริทึมทั้งหมด 8 อัลกอริทึม 1. Logistic Regression 2. Naive Bayes 3. Linear SVM 4. KNN 5. Decision Tree 6. Random Forest 7. XGBoost 8. Neural network

Image description

Image description
ผลลัพท์ : จากผลลัพท์แสดงให้เห็นว่า อัลกอริทึมที่ดำเนินการได้ดีที่สุด คือ Random forest ที่ 90.16%

Image description

6.Final Implementation
ตอนนี้เราสามารถนำอัลกอริทึมที่ดำเนินการได้ดีที่สุดคือ Random forest เข้าสู่โมเดลของเราและตรวจสอบว่าโมเดลของเราจะให้ผลลัพธ์ที่ถูกต้องหรือไม่ด้วยข้อมูลที่มีอยู่

Image description
ผลลัพท์ :

Image description
จากการกำหนด target 1 แทนการเป็นโรคหัวใจ และ target 0 แทนการไม่มีโรคหัวใจ เมื่อนำข้อมูลของผู้ป่วยที่ไม่เป็นโรคหัวใจ (case_1) และผู้ที่ป่วยเป็นโรคหัวใจ(case_2)มาทดสอบ จากผลลัพท์การทำนายแสดงให้เห็นว่าโมเดลสามารถทำนายได้อย่างถูกต้อง
ดังนั้นจึงสามารถสรุปได้ว่า เราจะสามารถทำนายโรคหัวใจแบบเรียลไทม์โดยใช้ข้อมูลของผู้ป่วยจากโมเดลด้วยการใช้ Random Forest ซึ่งสามารถทำนายโรคหัวใจได้อย่างแม่นยำที่สุด
เพียงเท่านี้เราก็สามมารถนำชุดข้อมูลนี้ไปวิจัยโรคหัวใจได้อย่างแม่นยำถึง90.16%%

Top comments (0)