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

K-means: ค่าเฉลี่ย Silhouette Width

การจัดกลุ่มแบบลำดับชั้น (hierarchical clustering) ได้ผลลัพธ์เป็น 3 กลุ่ม ในขณะที่ elbow method แนะนำ 2 กลุ่ม ในแบบฝึกหัดนี้ ให้ใช้ ค่าเฉลี่ย silhouette width เพื่อหาค่า k ที่เหมาะสมที่สุด

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

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

ดูคอร์ส

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

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

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

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

# Use map_dbl to run many models with varying value of k
sil_width <- map_dbl(2:10,  function(k){
  model <- pam(___, 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)
แก้ไขและรันโค้ด