การจัดกลุ่มจุดข้อมูล

การจัดกลุ่มจุดข้อมูล

การทำคลัสเตอร์ของจุดข้อมูล

DataPoint, Cluster, และ ClusterCollection เป็นชุดเครื่องมือจัดกลุ่มเชิงลำดับชั้นแบบรวมกลุ่มที่มีขนาดเล็กและใช้งานทั่วไปที่รวมอยู่กับ Aspose.PDF FOSS สำหรับ Python. พวกมันเป็น primitive การจัดกลุ่มข้อมูลทั่วไป — จุดที่มีพิกัดและป้ายกำกับ, กลุ่มของรายการ, และคอลเลกชันของกลุ่ม — ไม่ใช่คุณลักษณะเอกสารเฉพาะ PDF; โมดูลนี้ไม่ได้อ่านหรือเขียนเนื้อหา PDF เอง. ใช้พวกมันเมื่อโค้ดของคุณต้องการจัดกลุ่มค่าตัวเลข (เช่น การวัดที่คุณได้สกัดออกจากเอกสาร) ให้เป็นคลัสเตอร์และสรุปคลัสเตอร์ด้วยศูนย์กลางของมัน.


การแทนจุดข้อมูล

DataPoint จับคู่ name ที่ระบุตัวตนกับรายการ value ของพิกัดเชิงตัวเลข. ทั้งสองจะถูกเปิดเผยเป็น DataPoint.name และ DataPoint.value หลังจากการสร้าง.


การสร้างและคัดลอกคลัสเตอร์

Cluster ห่อหุ้มรายการของรายการที่เป็นตัวเลือกเป็นกลุ่มเดียว. Cluster.count รายงานว่าคลัสเตอร์มีรายการอยู่กี่รายการในขณะนี้, Cluster.contains() ตรวจสอบว่ารายการที่กำหนดเป็นสมาชิกหรือไม่, และ Cluster.clone() คืนค่าคัดลอกอิสระที่มีรายการของตัวเองเป็นแบ็คเอ็นด์. Cluster.empty() คืนค่าอินสแตนซ์คลัสเตอร์ว่างแบบแชร์, singleton แทนการจัดสรรใหม่ในทุกการเรียก.


การจัดกลุ่มคลัสเตอร์ในคอลเลกชัน

ClusterCollection ห่อหุ้มรายการตัวเลือกของอินสแตนซ์ Cluster เข้าเป็นคอลเลกชันเดียว ให้คุณมีอ็อบเจกต์หนึ่งอันเพื่อส่งต่อเมื่อฟังก์ชันต้องรับหรือคืนค่ามากกว่าหนึ่งคลัสเตอร์ในครั้งเดียว.


การคำนวณศูนย์กลางของคลัสเตอร์

DataPoint.get_centroid() หาค่าเฉลี่ยของพิกัดของแต่ละจุดข้อมูลใน Cluster ทีละตำแหน่ง และคืนค่า DataPoint ใหม่ที่แสดงถึงศูนย์กลาง จุดทุกจุดในคลัสเตอร์ต้องมีจำนวนมิติเดียวกันใน DataPoint.value เพื่อให้ค่าเฉลี่ยมีความหมาย.


เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด

  • รักษาความยาวของรายการ DataPoint.value ทุกรายการให้เท่ากันภายในคลัสเตอร์ — DataPoint.get_centroid() คำนวณค่าเฉลี่ยของพิกัดทีละตำแหน่ง ดังนั้นมิติที่ไม่ตรงกันจะทำให้ศูนย์กลางผิดพลาด.
  • ใช้ Cluster.empty() สำหรับคลัสเตอร์ว่างแบบแชร์และเป็นเอกลักษณ์แทนการสร้างคลัสเตอร์ว่างใหม่เมื่อคุณต้องการค่าเป็นเพียงตัวแทน.
  • เรียกใช้ Cluster.clone() ก่อนที่จะทำการเปลี่ยนแปลงคลัสเตอร์ที่คุณยังต้องการต้นฉบับไว้ที่อื่น — การโคลนจะคัดลอกรายการไอเท็มแทนการอ้างอิง.
  • ใช้ ClusterCollection เมื่อฟังก์ชันต้องรับหรือคืนค่ามากกว่าหนึ่ง Cluster เป็นค่าเดียว.
  • คลาสเหล่านี้เป็นยูทิลิตี้ทั่วไป ไม่ใช่ฟีเจอร์การแยกข้อมูล PDF — ให้จับคู่กับตรรกะของคุณเองเพื่อสร้างค่า DataPoint จากข้อมูลเอกสาร.

ปัญหาทั่วไป

ปัญหาสาเหตุการแก้ไข
DataPoint.get_centroid() สร้างศูนย์กลางที่มีจำนวนค่าที่ไม่คาดคิดจุดข้อมูลในคลัสเตอร์มีรายการ DataPoint.value ที่มีความยาวต่างกันตรวจสอบให้แน่ใจว่า DataPoint ทุกตัวที่เพิ่มเข้าไปใน Cluster มีมิติเดียวกัน
Cluster.contains() คืนค่า False สำหรับค่าที่คุณคาดว่าจะมีอยู่การตรวจสอบสมาชิกทำโดยตรงกับวัตถุรายการที่จัดเก็บไว้ ดังนั้นสองอินสแตนซ์ DataPoint ที่สร้างแยกกันแต่มีชื่อและค่าเดียวกัน จะไม่ได้รับการพิจารณาให้เท่ากันโดยอัตโนมัติโดยการค้นหาตามอัตลักษณ์ใช้ instance DataPoint เดียวกันซ้ำ, หรือเปรียบเทียบโดย DataPoint.name และ DataPoint.value ก่อนสมมติว่ามีสมาชิก
การเปลี่ยนแปลงคลัสเตอร์ที่คัดลอกจะทำให้ต้นฉบับเปลี่ยนแปลงด้วยCluster.clone() ถูกข้ามและการอ้างอิง Cluster เดียวกันถูกแชร์แทนการคัดลอกเรียก Cluster.clone() ก่อนเสมอเมื่อผู้เรียกต้องการสำเนาอิสระ

FAQ

อะไรคือความแตกต่างระหว่าง Cluster และ ClusterCollection?

Cluster เก็บรายการของไอเท็ม — โดยทั่วไปเป็นอินสแตนซ์ของ DataPoint — ที่เป็นส่วนหนึ่งของกลุ่มเดียว ClusterCollection เก็บรายการของอ็อบเจ็กต์ Cluster: มันจัดกลุ่มคลัสเตอร์เข้าด้วยกัน ไม่ใช่จุดข้อมูลแบบเดี่ยว.

DataPoint.get_centroid() แก้ไขคลัสเตอร์ที่ได้รับหรือไม่?

ไม่. มันอ่านไอเท็มที่มีอยู่แล้วใน Cluster ที่ให้มาและคืนค่า DataPoint ใหม่สำหรับศูนย์กลาง; คลัสเตอร์ต้นทางและไอเท็มของมันจะไม่ถูกเปลี่ยนแปลง.

ฟังก์ชันการจัดกลุ่มนี้เป็นเฉพาะสำหรับเนื้อหา PDF หรือไม่?

No. DataPoint, Cluster และ ClusterCollection เป็น primitive การจัดกลุ่มตัวเลขทั่วไปที่มาพร้อมกับแพคเกจ aspose_pdf. พวกมันไม่ได้อ่านหน้า, ข้อความ, หรือโครงสร้าง PDF อื่นใดด้วยตนเอง — พวกมันทำงานเพียงบนค่าที่คุณสร้างให้เท่านั้น.

ทำไม Cluster.empty() ถึงคืนอินสแตนซ์เดียวกันทุกครั้ง?

Cluster.empty() คืนค่า singleton ที่แชร์กันเพื่อให้การเรียกซ้ำสำหรับ “no cluster” ไม่ได้จัดสรรอ็อบเจกต์ใหม่ในแต่ละครั้ง.


API Reference สรุป

คลาส/เมธอดคำอธิบาย
DataPointจุดที่ตั้งชื่อและเก็บรายการพิกัดเชิงตัวเลข
DataPoint.nameชื่อที่ใช้ระบุจุด
DataPoint.valueรายการพิกัดเชิงตัวเลขของจุด
DataPoint.get_centroid()คืนค่า DataPoint ใหม่ที่หาค่าเฉลี่ยพิกัดของทุกจุดในกลุ่ม
Clusterกลุ่มของรายการ โดยทั่วไปเป็นอินสแตนซ์ของ DataPoint
Cluster.empty()ส่งคืน singleton ของคลัสเตอร์ว่างที่แชร์
Cluster.contains()ตรวจสอบว่ารายการอยู่ใน cluster หรือไม่
Cluster.clone()ส่งคืนสำเนาอิสระของ cluster
Cluster.countจำนวนรายการที่อยู่ใน cluster ในปัจจุบัน
ClusterCollectionห่อหุ้มรายการของอินสแตนซ์ Cluster ให้เป็นคอลเลกชันเดียว

ดูเพิ่มเติม

 ภาษาไทย