การจัดกลุ่มข้อมูลด้วยเทคนิค Data binning
การ binning เป็นการจัดกลุ่มที่มีจำนวนมากๆ และ มีความต่อเนื่อง อย่างเช่น Linear Regression กลุ่มข้อมูลเพื่อตรวจสอบข้อผิดพลาดของข้อมูลที่อยู่ในช่วงเล็กๆ โดยกำหนดกลุ่มค่า bin เอาไว้เพื่อเป็นตัวแทนของกลุ่มข้อมูลที่เราสนใจ
โดยประโยชน์ของการวิเคราะห์ข้อมูลวิธีนี้ เพื่อหาข้อผิดพลาด ค่าที่มีมากๆ
สมมติว่ามี Dataset อยู่ 1 ชุด เช่น ชุดข้อมูลเงินเดือนของพนักงาน ใช้วิธี binning เพื่อจัดเป็นกลุ่ม เช่น กลุ่มช่วงอายุ กลุ่มช่วงเงินเดือน เพื่อวิเคราะห์ปริมาณของข้อมูล
ID | AGE | SALARY | AT |
1 | 30 | 30000 | UK |
2 | 35 | 33000 | US |
3 | 32 | 31500 | US |
4 | 49 | 45000 | US |
5 | 44 | 40000 | UK |
6 | 48 | 42000 | UK |
7 | 31 | 32000 | UK |
8 | 32 | 34000 | US |
9 | 35 | 41000 | UK |
แบ่งตามอายุ และ ช่วงเงินเดือนเปรียบเทียบด้วยความถี่
ช่วงอายุ / ช่วงเงินเดือน | 30000 - 40000 | 40000 - 50000 |
30 | 1 | 0 |
31 | 1 | 0 |
32 | 2 | 0 |
35 | 1 | 1 |
44 | 1 | 0 |
48 | 0 | 1 |
49 | 0 | 1 |
รวม | 6 | 3 |
ลองทดลองเรื่อง binning ด้วยข้อมูลจาก google timeline
โดย Download จาก google trend ด้วย Keyword Cupcake แล้วลองทดสอบไปตาม code ด้านล่างได้เลย
df = pd.read_csv('cupcake.csv')
กำหนดขอบของค่า bin ที่ต้องการโดยกำหนด value ออกเป็น 3 กลุ่ม ได้แก่ small medium big จากนั้นก็คำนวนระยะห่างระหว่าง ค่าต่ำสุด และ ค่าสูงสุด โดย แยกออกเป็น 3 ส่วนด้วย code ด้านล่าง
min_value = df['cupcake: (ทั่วโลก)'].min()
max_value = df['cupcake: (ทั่วโลก)'].max()
print(min_value)
print(max_value)
ผลที่ได้คือ min : 4 , max: 100
ตอนนี้เราสามารถที่จะคำนวณค่า range ของแต่ละ interval เช่นค่า min max ของแต่ละ interval
small — (edge1, edge2)
medium — (edge2, edge3)
big — (edge3, edge4)
โดยการใช้ฟังก์ชัน linspace() ของ numpy
import numpy as np
bins = np.linspace(min_value,max_value,4)
bins
array([ 4., 36., 68., 100.])
โดนการกำหนด labels
labels = ['small', 'medium', 'big']
เราจะใช้ฟังก์ชัน cut() convert ตัวเลข ของ column cupcake เพื่อแปลงเป็น categorical หมวดหมู่ จำเป็นที่จะต้องกำหนด ค่า bin และ label และ set include_lowest เป็น true
df['bins'] = pd.cut(df['cupcake: (ทั่วโลก)'], bins=bins, labels=labels, include_lowest=True)
df['bins']
df['bins'] จะเป็นจัดกลุ่มข้อมูลที่ได้แบ่งเอาไว้
คราวนี้เราจะแสดงผลด้วย matplotlib
import matplotlib.pyplot as plt
plt.hist(df['bins'], bins=3)
สรุป
Data binning เป็นเทคนิคการประมวลผลข้อมูลเบื้องต้น โดยไว้ใช้สำหรับการหาค่าที่ missing values, formatting, normalization and standardization
จะมีประโยชน์มากเมื่อจะต้องการ convert ข้อมูลเป็นตัวเลขในแต่ละกลุ่มที่เราต้องการ หรือจัดกลุ่มให้ข้อมูลเพื่อวิเคราะห์ข้อมูลบางอย่างตามต้องการ
REF
data-preprocessing-with-python
image by
Histogram vector created by pikisuperstar - www.freepik.com