0Pricing
Learn AI with Python · บทเรียน

การตรวจจับและนำค่าผิดปกติออก

วิธีค่า Z วิธี IQR แนวคิดป่าแยกส่วน และการจัดการค่าผิดปกติในทางปฏิบัติ

การตรวจจับและนำค่าผิดปกติออก เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

ค่าผิดปกติคืออะไร

ค่าผิดปกติคือค่าที่อยู่ห่างจากข้อมูลส่วนที่เหลือมาก อาจเป็นค่าที่สูงหรือต่ำอย่างแท้จริง ข้อผิดพลาดจากการป้อนข้อมูล หรือความขัดข้องของเซนเซอร์ ค่าผิดปกติอาจทำให้ค่าเฉลี่ย ความแปรปรวน และแบบจำลองบิดเบือน จึงควรตรวจหาอย่างตั้งใจ

วิธีคะแนน z

คะแนน zวัดว่าค่าหนึ่งอยู่ห่างจากค่าเฉลี่ยกี่ส่วนเบี่ยงเบนมาตรฐาน: z = (x - mean) / std กฎทั่วไปคือทำเครื่องหมายจุดใด ๆ ที่มี |z| > 3 ว่าเป็นค่าผิดปกติ

import numpy as np
data = np.array([10, 12, 11, 13, 12, 100])
z = (data - data.mean()) / data.std()
print(np.round(z, 2))

การระบุค่าผิดปกติด้วย scipy zscore

scipy.stats.zscore คำนวณคะแนน z สำหรับอาร์เรย์ เมื่อนำมาใช้ร่วมกับเกณฑ์จะสามารถสร้างหน้ากากบูลีนสำหรับค่าผิดปกติได้

from scipy import stats
z = np.abs(stats.zscore(data))
outliers = z > 3
print(data[outliers])

ข้อจำกัดของคะแนน z

คะแนน z ใช้ค่าเฉลี่ยและ std ซึ่งทั้งสองค่าถูกดึงให้เบี่ยงเบนจากค่าผิดปกติได้เช่นกัน เมื่อข้อมูลเบ้มากหรือมีค่าที่สุดขั้ว คะแนน z อาจตรวจพบค่าผิดปกติได้น้อยเกินไป วิธี IQR มีความทนทานมากกว่า

วิธี IQR

พิสัยระหว่างควอไทล์ IQR = Q3 - Q1 ครอบคลุมข้อมูลตรงกลาง 50 เปอร์เซ็นต์ โดยคำนวณจากควอไทล์ซึ่งแทบไม่ถูกค่าผิดปกติทำให้เคลื่อน จึงมีความทนทาน

q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1
print(q1, q3, iqr)

ขอบเขต IQR

ขอบเขตของ Tukey กำหนดขีดจำกัดดังนี้: lower = Q1 - 1.5*IQR, upper = Q3 + 1.5*IQR ค่าที่อยู่นอกขอบเขตจะถูกทำเครื่องหมาย กฎเดียวกันนี้ใช้วาดหนวดของ boxplot

lower = q1 - 1.5 * iqr
upper = q3 + 1.5 * iqr
mask = (data < lower) | (data > upper)
print(data[mask])   # outliers

การแสดงภาพด้วย boxplot

boxplot แสดงกฎ IQR ด้วยภาพ กล่องครอบคลุมตั้งแต่ Q1 ถึง Q3 เส้นคือค่ามัธยฐาน หนวดทอดไปถึงขอบเขต และจุดที่อยู่นอกขอบเขตจะแสดงเป็นจุดค่าผิดปกติแต่ละจุด

# import matplotlib.pyplot as plt
# plt.boxplot(data)
# plt.show()

การนำค่าผิดปกติออก

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

clean = data[~mask]
print(clean)   # outlier removed

การวินซอไรซ์ด้วย np.clip

แทนที่จะลบค่าออก การวินซอไรซ์จะจำกัดค่าที่สุดขั้วให้อยู่ที่ขีดจำกัดที่เลือกไว้ด้วย np.clip วิธีนี้รักษาจำนวนแถวไว้และลดอิทธิพลของค่าที่สุดขั้ว

capped = np.clip(data, lower, upper)
print(capped)   # extreme value pulled to the upper fence

ตัดค่าที่เปอร์เซ็นไทล์

การวินซอไรซ์ที่ใช้กันทั่วไปคือตัดค่าให้อยู่ระหว่างเปอร์เซ็นไทล์ที่ 1 และ 99 ซึ่งนำออกเฉพาะค่าที่สุดขั้วที่สุด 2 เปอร์เซ็นต์ของข้อมูลอย่างสมมาตร

lo, hi = np.percentile(data, [1, 99])
print(np.clip(data, lo, hi))

นำออกหรือตัดเพดาน

เลือกตามบริบท: REMOVE ข้อผิดพลาดที่ชัดเจน เช่น ค่าที่เป็นไปไม่ได้, CAP ค่าที่เป็นจริงแต่สุดขั้วและคุณต้องการเก็บไว้ และบางครั้งให้ KEEP ค่าผิดปกติไว้เมื่อค่าดังกล่าวเป็นสัญญาณ เช่น ในการตรวจจับการฉ้อโกง ควรบันทึกเหตุผลของการตัดสินใจ

ตรวจสอบอย่างรวดเร็ว

ทดสอบความรู้เรื่องค่าผิดปกติของคุณ

ทบทวน

ชุดเครื่องมือจัดการค่าผิดปกติ:

  • คะแนน z: ทำเครื่องหมาย |z| > 3 ผ่าน scipy.stats.zscore (ไวต่อค่าผิดปกติ)
  • ขอบเขต IQR: Q1-1.5*IQR ถึง Q3+1.5*IQR (ทนทานและเป็นพื้นฐานของ boxplot)
  • นำข้อผิดพลาดที่แท้จริงออก และวินซอไรซ์ด้วย np.clip เพื่อจำกัดค่าที่สุดขั้ว
  • บันทึกเหตุผลเสมอว่าทำไมจึงนำค่าต่าง ๆ ออกหรือตัดเพดาน

คำถามที่พบบ่อย

บทเรียน “การตรวจจับและนำค่าผิดปกติออก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตรวจจับและนำค่าผิดปกติออก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตรวจจับและนำค่าผิดปกติออก”

วิธีค่า Z วิธี IQR แนวคิดป่าแยกส่วน และการจัดการค่าผิดปกติในทางปฏิบัติ คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การตรวจจับและนำค่าผิดปกติออก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตรวจจับและนำค่าผิดปกติออก
  2. การเข้ารหัสตัวแปรเชิงหมวดหมู่
  3. การปรับสเกลคุณลักษณะ: การทำให้เป็นบรรทัดฐานและมาตรฐาน
  4. การสร้างสายงานการเตรียมข้อมูล
← กลับไปที่ Learn AI with Python