K- mean เป็นอัลกอริทึมการจัดกลุ่มแบบไม่ได้รับการจัดการมาตรฐานซึ่งกำหนดชุดของ "คะแนน" และกลุ่มของ K จำนวนหนึ่งจะกำหนด "จุด" แต่ละจุดให้กับหนึ่งในกลุ่ม K
Pseudo-Code ของ K-mean
โปรดทราบว่า K-Mean มีหลากหลายรูปแบบ คุณต้องใช้อัลกอริทึมที่ฉันอธิบายด้านล่าง คุณอาจมีการเปลี่ยนแปลงบางอย่างเกี่ยวกับอัลกอริทึมหรือใช้บิวด์อินตราบเท่าที่คุณจะได้รับผลลัพธ์เช่นเดียวกับอัลกอริทึมนี้ที่ให้คะแนนเริ่มต้นเหมือนกัน
ในการท้าทายนี้อินพุตทั้งหมดจะเป็นจุดบนระนาบ 2D (แต่ละจุดจะถูกแทนด้วยพิกัดใน x และ y)
Inputs: K, the number of clusters
P, the set of points
Choose K points of P uniformly at random
Each chosen point is the initial centroid of its cluster
Loop:
For each point in P:
Assign to the cluster whose centroid is the nearest (Euclidean distance)
In case of a tie, any of the tied cluster can be chosen
Recompute the centroid of each cluster:
Its x coordinate is the average of all x's of the points in the cluster
Its y coordinate is the average of all y's of the points in the cluster
Until the clusters don't change from one iteration to the next
Output: the set of clusters
อินพุตและเอาต์พุต
- คุณอาจใช้ K และ P ผ่าน
STDIN
หรือเป็นอาร์กิวเมนต์ของฟังก์ชัน ฯลฯ - P และคะแนนใน P สามารถแสดงโดยใช้โครงสร้างใด ๆ ที่เป็นธรรมชาติสำหรับชุด / รายการในภาษาที่คุณเลือก
- K เป็นจำนวนเต็มบวกอย่างเคร่งครัด
- คุณอาจจะสมมติว่าอินพุตนั้นถูกต้อง
- จะต้องมีอย่างน้อย K คะแนนเป็น P
- คุณสามารถส่งออกกลุ่มไปยัง
STDOUT
ส่งกลับจากฟังก์ชั่น ฯลฯ - การเรียงลำดับของคลัสเตอร์และการเรียงลำดับภายในคลัสเตอร์นั้นไม่สำคัญ - คุณสามารถส่งคืนกลุ่มของจุดเพื่อเป็นตัวแทนของกลุ่มหรือแต่ละจุดที่มีป้ายระบุสำหรับกลุ่ม (เช่นจำนวนเต็ม)
กรณีทดสอบ
เนื่องจากกลุ่มผลลัพธ์นั้นขึ้นอยู่กับจุดที่เลือกไว้ในตอนแรกคุณอาจไม่ได้รับผลลัพธ์เดียวกันทั้งหมด (หรือผลลัพธ์เดียวกันทุกครั้งที่คุณเรียกใช้รหัสของคุณ)
ดังนั้นให้ใช้เอาต์พุตเป็นตัวอย่างเอาต์พุตเท่านั้น
Input:
K = 1
P = [[1,2.5]]
Output:
[[[1,2.5]]]
Input:
K = 3
P = [[4,8], [15,16], [23,42], [-13.37,-12.1], [666,-666]]
Output:
[[[666,-666]],[[-13.37,-12.1],[4,8]],[[15,16],[23,42]]]
Input:
K = 2
P = [[1,1], [1,1], [1,1]]
Output:
[[[1,1]],[[1,1],[1,1]]]
เกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
1
ทุกจุดของคลัสเตอร์ที่สองมีเลเบลและ2
อื่น ๆ )
K=2, P = [[1,1], [1,1], [1,1]]
กรณีทดสอบเลว: