การแบ่งกลุ่มลูกค้าในห้างสรรพสินค้า ด้วย KMeans Clustering
จากข้อมูล ลูกค้าในห้างสรรพสินค้า https://www.kaggle.com/vjchoudhary7/customer-segmentation-tutorial-in-python/version/1
วันนี้เราจะ ทำการ แบ่งกลุ่มลูกค้าในห้างสรรพสินค้า ด้วย Kmeans โดยพิจารณา จาก Spending_Score โดยมีคะแนน 1 ถึง 100 ให้ลูกค้าทุกคนในห้างสรรพสินค้า โดยดูจากประวัติการซื้อและ จำนวนสินค้า ตลอดจนมูลค่าที่ซื้อ ของแต่ละคน
จากชุดข้อมูลที่ ดาวน์โหด มาชื่อ Mall_Customers.csv ซึ่งหาดูจากการกระจายต้ว ก็จะพบว่า มีการเกาะกลุ่มกันชัดเจน
โจทย์
จากข้อสังเกต ดังกล่าว จงแบ่งกลุ่มลูกค้าจาก รายได้ และ คะแนน Spending_Score ของพวกเขา ว่ามีกี่กลุ่มที่แตกต่างกัน
มาเริ่มกันเลย
ขั้นตอนที่ 1: อ่านไฟล์ Mall_Customers.csv ด้วย pandas และ ทำการ rename เพื่อให้อ้างง่ายขึ้น ดังภาพ รูปที่ 1
ขั้นตอนที่ 2: ทำการรัน KMeans ระหว่างจำนวน 2 ถึง 9 กลุ่ม เพื่อหาค่า Inertia โดยใช้ Kmeans algorithm
ขั้นตอนที่ 3: จาก ตาราง (data frame) ที่สร้างขึ้นชื่อ dd จะใช้เก็บค่า ของ inertia ในแต่ละค่า k
ขั้นตอนที่ 4: ทำการหา percent of change โดยเก็บไว้ใน คอลัมน์ ชื่อ pct_chg
ขั้นตอนที่ 5: ทำการสร้างกราฟของแต่ละ k เพื่อหา optimal point โดยแสดง percent of change ของ k ก่อนหน้าทุกจุด
จากขั้นตอนที่ 5 นี้จะเห็นได้ชัดว่า จุด optimal point จะเป็น k=5 เพราะ percent of change (png) เกือบไม่เปลี่ยนแปลงเป็นครั้งแรก หลังจาก k=5 เราจะเอา จุดแรกที่ค่า png ไม่เปลี่ยนแปลงเป็นครั้งแรก เป็นจุด optimal point ดังนั้น k=5
ขั้นตอนที่ 6: เรียก sklearn.cluster และ สร้าง kmeans model ที่มี จำนวนกลุ่ม n_cluster=5 จากนั้นทำการ เทรด โดยใช้คำสั่ง fit บน Spending_Score และ Income
ขั้นตอนที่ 7: สร้าง กราฟ scatter point และทำการสร้างจุดศูนย์กลางของกลุ่ม ด้วย kmeans.cluster_centers_[:, 0] ซึ่งคือ x และ kmeans.cluster_centers_[:, 1] ซึ่งคือ y เพื่อดูจำนวนกลุ่ม
จากรูปที่ เห็นชัดเจนว่ามี 5 กลุ่ม แสดงว่า วิธี elbow method ใช้ได้ผล โดยหาจุด optimal point ก่อน แล้วจึงทำการ จัดกลุ่ม