Z-score, Standardization, Normalization
1) Z-score:
Z-score แสดงถึงจำนวนส่วนเบี่ยงเบนมาตรฐานที่จุดข้อมูลห่างจากค่าเฉลี่ยของการกระจาย คำนวณได้ดังนี้:
z = (x - μ) / σ
โดยที่:
x = จุดข้อมูล
μ = ค่าเฉลี่ยของการกระจาย
σ = ส่วนเบี่ยงเบนมาตรฐานของการกระจาย
2) การทำมาตรฐาน (Standardization):
เป็นกระบวนการแปลงข้อมูลให้มีค่าเฉลี่ยเป็น 0 และส่วนเบี่ยงเบนมาตรฐานเป็น 1 ซึ่งโดยพื้นฐานแล้วเหมือนกับการคำนวณ z-score สำหรับแต่ละจุดข้อมูล
3) การทำนอร์มัลไลเซชัน (Normalization):
หมายถึงการปรับขนาดข้อมูลให้อยู่ในช่วงที่กำหนด มักจะอยู่ระหว่าง 0 และ 1 วิธีที่ใช้บ่อยที่สุดคือการปรับขนาดแบบ Min-Max:
x_normalized = (x - min(x)) / (max(x) - min(x))
ความแตกต่างของแต่ละวิธี:
- Z-score และการทำ Standardization ยังคงรักษารูปร่างของการกระจายและความสัมพันธ์ระหว่างจุดข้อมูล แต่เปลี่ยนมาตราส่วนเป็นส่วนเบี่ยงเบนมาตรฐานจากค่าเฉลี่ย
- การทำ Normalization เปลี่ยนการกระจายให้อยู่ในช่วงที่กำหนด ซึ่งมีประโยชน์เมื่อคุณต้องการให้ค่าเป็นบวกหรืออยู่ในช่วงเฉพาะ
ตัวอย่าง Python code สำหรับแต่ละวิธี:
import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler
# ข้อมูลตัวอย่าง
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Z-score (คำนวณด้วยตนเอง)
z_score = (data - np.mean(data)) / np.std(data)
# การทำ Standardization (ใช้ sklearn)
scaler = StandardScaler()
standardized = scaler.fit_transform(data.reshape(-1, 1)).flatten()
# การทำ Normalization (Min-Max Scaler)
normalizer = MinMaxScaler()
normalized = normalizer.fit_transform(data.reshape(-1, 1)).flatten()
print("Original data:", data)
print("Z-score:", z_score)
print("Standardized data:", standardized)
print("Normaized data:", normalized)
Code ด้านบน แสดงวิธีการคำนวณ z-score ด้วยตนเอง และวิธีการใช้ StandardScaler ของ Scikit-learn สำหรับการทำ Standardization และ MinMaxScaler สำหรับการทำ Normalization
Blog นี้ เขียนร่วมกับ Claude.ai โดยใช้ Prompt
As a data scientist, please explain z score, standardization and normalization. How are they different? And please provide the sample Python code.