การวิเคราะห์ข้อมูลเชิงสำรวจ

Machine Learning แบบ End-to-End

Joshua Stapleton

Machine Learning Engineer

กระบวนการ EDA

  • ตรวจสอบและวิเคราะห์ชุดข้อมูล
  • ทำความเข้าใจชุดข้อมูล
  • แสดงผลชุดข้อมูลด้วยภาพ
  • จำแนก / จัดประเภทชุดข้อมูล

แผนภาพแสดงองค์ประกอบต่าง ๆ ของ EDA ที่นำไปใช้กับชุดข้อมูลโรคหัวใจของผู้ป่วย

Machine Learning แบบ End-to-End

ทำความเข้าใจข้อมูล

df.head()

  • แสดงแถวแรก ๆ ของชุดข้อมูล
  • ให้ภาพรวมโครงสร้างของข้อมูล
# Print the first 5 rows
print(heart_disease_df.head())

5 แถวแรกของ DataFrame โรคหัวใจ ผลลัพธ์จากการเรียก df.head()

df.info()

  • สรุปข้อมูลฟีเจอร์
  • แสดงจำนวน non-null และประเภทของฟีเจอร์
# Print out details
print(heart_disease_df.info())

ข้อมูลสรุปของ DataFrame โรคหัวใจ ผลลัพธ์จากการเรียก df.info()

Machine Learning แบบ End-to-End

ความ(ไม่)สมดุลของคลาส

df.value_counts()

  • นับจำนวนครั้งที่แต่ละคลาสปรากฏ
  • คลาส: การมีโรคหัวใจในรูปแบบ binary (1/0)
  • สำคัญสำหรับการสร้างโมเดล
# print the class balance
print(heart_disease_df['target'].value_counts(normalize=True))

ความสมดุลของคลาสในคอลัมน์ target ของ DataFrame โรคหัวใจ ผลลัพธ์จากการเรียก .value_counts() บนคอลัมน์ target

Machine Learning แบบ End-to-End

ค่าที่ขาดหายไป

  • อาจทำให้เกิดข้อผิดพลาด
  • ผลลัพธ์ไม่ครอบคลุมและมีความเอนเอียง

ใช้ df.isnull()

  • ตรวจสอบค่า null/ว่าง/ที่หายไป
  • ใช้กับคอลัมน์เดียวหรือหลายคอลัมน์

การใช้งาน

# check whether all values in a column are null
print(heart_disease_df['oldpeak'].isnull().all())
True
Machine Learning แบบ End-to-End

Outliers

  • ค่าผิดปกติ

    • ความผิดพลาดในการวัด
    • ความผิดพลาดในการป้อนข้อมูล
    • เหตุการณ์ที่เกิดขึ้นน้อย
  • อาจบิดเบือนประสิทธิภาพของโมเดล

    • โมเดลเรียนรู้จากค่าสุดขีด
    • ไม่ได้สะท้อนแนวโน้มทั่วไปของข้อมูล
  • บางครั้งมีประโยชน์:

    • ค่าที่พบได้น้อย
    • ตรวจจับด้วย boxplot หรือ IQR

การแสดงผลค่าผิดปกติ (outlier)

Machine Learning แบบ End-to-End

การแสดงผลข้อมูลด้วยภาพ

การแสดงผลด้วยภาพช่วยให้เห็น:

  • แนวโน้มทั่วไป
  • ค่าที่ขาดหายไปและ outliers

ประเภทการแสดงผลอื่น ๆ:

  • Kernel density estimation
  • Empirical cumulative distributions
  • Bivariate distributions
df['age'].plot(kind='hist')
plt.xlabel('Age')
plt.ylabel('Frequency')
plt.show()

การแสดงผลการกระจายตัวของอายุในชุดข้อมูล

1 https://seaborn.pydata.org/tutorial/distributions.html, https://app.datacamp.com/learn/courses/intermediate-data-visualization-with-seaborn
Machine Learning แบบ End-to-End

เป้าหมายของ EDA

ทำความเข้าใจข้อมูล

  • มีรูปแบบใดที่น่าสนใจหรือไม่?
  • เช่น ผู้ชายมีอัตราการเป็นโรคหัวใจสูงกว่าหรือไม่?

ตรวจจับ outliers

  • มีข้อมูลใดที่อยู่นอกช่วงที่ยอมรับได้หรือไม่?
  • มีค่าที่ผิดพลาดหรือขาดหายไปหรือไม่?

ตั้งสมมติฐาน

  • ควรคาดหวังอะไรจากข้อมูล?

ตรวจสอบข้อสมมติ

  • สิ่งที่คาดไว้สอดคล้องกับความเป็นจริงหรือไม่?
Machine Learning แบบ End-to-End

มาฝึกกันเถอะ!

Machine Learning แบบ End-to-End

Preparing Video For Download...