เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

กลับมาดูข้อมูลขายส่ง: ค่า k ที่ "ดีที่สุด"

ใน บทที่ 2 คุณได้สำรวจข้อมูลผู้จัดจำหน่ายสินค้าขายส่ง customers_spend ด้วยการจัดกลุ่มแบบลำดับชั้น คราวนี้จะวิเคราะห์ข้อมูลชุดเดียวกันด้วยเครื่องมือ k-means clustering ที่ได้เรียนมาในบทนี้

ขั้นตอนแรกคือการหาค่า k ที่ "ดีที่สุด" โดยใช้ ความกว้างซิลูเอตเฉลี่ย (average silhouette width)

ทบทวนข้อมูลสั้น ๆ: ชุดข้อมูลนี้บันทึกยอดใช้จ่ายของลูกค้า 45 รายของผู้จัดจำหน่ายขายส่ง ในหมวดอาหาร Milk, Grocery และ Frozen ซึ่งเก็บอยู่ใน data frame customers_spend สำหรับแบบฝึกหัดนี้ เนื่องจากข้อมูลทั้งหมดเป็นประเภทเดียวกัน (ยอดใช้จ่าย) จึงไม่จำเป็นต้องสเกลข้อมูล

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การวิเคราะห์กลุ่มข้อมูลใน R

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ใช้ map_dbl() รัน pam() กับข้อมูล customers_spend สำหรับค่า k ตั้งแต่ 2 ถึง 10 แล้วดึงค่า ความกว้างซิลูเอตเฉลี่ย จากแต่ละโมเดล: model$silinfo$avg.width เก็บเวกเตอร์ผลลัพธ์ไว้ในตัวแปร sil_width
  • สร้าง data frame ใหม่ชื่อ sil_df ที่ประกอบด้วยค่า k และเวกเตอร์ ความกว้างซิลูเอตเฉลี่ย
  • ใช้ข้อมูลใน sil_df สร้างกราฟเส้นที่แสดงความสัมพันธ์ระหว่าง k กับ ความกว้างซิลูเอตเฉลี่ย

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Use map_dbl to run many models with varying value of k
sil_width <- map_dbl(2:10,  function(k){
  model <- pam(x = ___, k = ___)
  model$silinfo$avg.width
})

# Generate a data frame containing both k and sil_width
sil_df <- data.frame(
  k = ___,
  sil_width = ___
)

# Plot the relationship between k and sil_width
ggplot(___, aes(x = ___, y = ___)) +
  geom_line() +
  scale_x_continuous(breaks = 2:10)
แก้ไขและรันโค้ด