Phân cụm các điểm dữ liệu

Phân cụm các điểm dữ liệu

Phân cụm Các Điểm Dữ liệu

DataPoint, Cluster, và ClusterCollection là một bộ công cụ nhỏ, đa mục đích cho việc phân cụm hợp nhất phân cấp (hierarchical-agglomerative-clustering) được đóng gói cùng với Aspose.PDF FOSS cho Python. Chúng là các nguyên thủy nhóm dữ liệu chung — một điểm có tọa độ và nhãn, một nhóm các mục, và một tập hợp các nhóm — chứ không phải tính năng tài liệu đặc thù cho PDF; không có gì trong mô-đun này đọc hoặc ghi nội dung PDF. Hãy sử dụng chúng khi mã của bạn cần nhóm các giá trị số (ví dụ, các đo lường mà bạn đã trích xuất từ một tài liệu) thành các cụm và tóm tắt một cụm bằng centroid của nó.


Biểu diễn Một Điểm Dữ liệu

DataPoint ghép một name nhận dạng với một danh sách value các tọa độ số. Cả hai đều được phơi bày dưới dạng DataPoint.name và DataPoint.value sau khi khởi tạo.


Xây dựng và Sao chép Các Cụm

Cluster gói một danh sách tùy chọn các mục vào một nhóm duy nhất. Cluster.count báo cáo số lượng mục mà cụm hiện đang chứa, Cluster.contains() kiểm tra xem một mục cụ thể có phải là thành viên hay không, và Cluster.clone() trả về một bản sao độc lập được hỗ trợ bởi danh sách mục riêng của nó. Cluster.empty() trả về một thể hiện empty-cluster singleton chia sẻ thay vì cấp phát một thể hiện mới mỗi lần gọi.


Nhóm Các Cụm trong Một Bộ Sưu Tập

ClusterCollection gói một danh sách tùy chọn các thể hiện Cluster thành một bộ sưu tập duy nhất, cung cấp cho bạn một đối tượng để truyền đi khi một hàm cần nhận hoặc trả về hơn một cụm cùng một lúc.


Tính toán Trung tâm Cụm

DataPoint.get_centroid() tính trung bình các tọa độ của mọi điểm dữ liệu trong một Cluster, vị trí theo vị trí, và trả về một DataPoint mới đại diện cho trung tâm. Mỗi điểm trong cụm phải có cùng số chiều trong DataPoint.value để phép trung bình có ý nghĩa.


Mẹo và Thực hành Tốt nhất

  • Giữ cho mọi danh sách DataPoint.value có cùng độ dài trong một cụm — DataPoint.get_centroid() tính trung bình các tọa độ vị trí theo vị trí, vì vậy các chiều không khớp sẽ tạo ra một trung tâm gây hiểu lầm.
  • Sử dụng Cluster.empty() cho một cụm rỗng chung, đơn thể thay vì tạo một cụm rỗng mới khi bạn chỉ cần một giá trị giữ chỗ.
  • Gọi Cluster.clone() trước khi thay đổi một cụm mà bạn vẫn cần bản gốc ở nơi khác — việc sao chép tạo một bản sao danh sách mục thay vì tham chiếu tới nó.
  • Hãy dùng ClusterCollection khi một hàm cần nhận hoặc trả về hơn một Cluster dưới dạng một giá trị duy nhất.
  • Các lớp này là các tiện ích chung, không phải tính năng phân tích PDF — hãy kết hợp chúng với logic của bạn để tạo ra các giá trị DataPoint từ dữ liệu tài liệu.

Các vấn đề thường gặp

Vấn đềNguyên nhânSửa
DataPoint.get_centroid() tạo ra một centroid có số lượng giá trị không mong đợiCác điểm dữ liệu trong cụm có các danh sách DataPoint.value có độ dài khác nhauĐảm bảo mọi DataPoint được thêm vào Cluster đều có cùng số chiều
Cluster.contains() trả về False cho một giá trị mà bạn mong đợi tồn tạiThành viên được kiểm tra trực tiếp đối chiếu với các đối tượng mục đã lưu, vì vậy hai thể hiện DataPoint được tạo riêng biệt nhưng có cùng tên và giá trị sẽ không tự động được coi là bằng nhau trong các tra cứu dựa trên danh tínhTái sử dụng cùng một thể hiện DataPoint, hoặc so sánh bằng DataPoint.name và DataPoint.value trước khi giả định thành viên
Thay đổi một cụm đã sao chép cũng làm thay đổi bản gốcCluster.clone() đã bị bỏ qua và cùng một tham chiếu Cluster đã được chia sẻ thay vì sao chépGọi Cluster.clone() trước khi người gọi cần một bản sao độc lập

FAQ

Sự khác biệt giữa Cluster và ClusterCollection là gì?

Cluster chứa một danh sách các mục — thường là các thể hiện DataPoint — thuộc một nhóm. ClusterCollection chứa một danh sách các đối tượng Cluster: nó nhóm các cụm lại với nhau, không phải các điểm dữ liệu riêng lẻ.

Liệu DataPoint.get_centroid() có thay đổi cụm được cung cấp không?

Không. Nó đọc các mục đã có trong Cluster được cung cấp và trả về một DataPoint mới cho trung tâm; cụm nguồn và các mục của nó được giữ nguyên.

Chức năng cụm này có dành riêng cho nội dung PDF không?

No. DataPoint, Cluster, và ClusterCollection là các primitive phân cụm số chung được cung cấp trong gói aspose_pdf. Chúng không tự đọc các trang, văn bản, hay bất kỳ cấu trúc PDF nào khác — chúng chỉ hoạt động trên các giá trị mà bạn tạo ra cho chúng.

Tại sao Cluster.empty() lại trả về cùng một thể hiện mỗi lần?

Cluster.empty() trả về một singleton chia sẻ để các lần gọi lặp lại cho “no cluster” không cấp phát một đối tượng mới mỗi lần gọi.


API Reference Tóm tắt

Lớp/Phương thứcMô tả
DataPointMột điểm có tên chứa danh sách các tọa độ số
DataPoint.nameTên nhận dạng của điểm
DataPoint.valueDanh sách các tọa độ số của điểm
DataPoint.get_centroid()Trả về một DataPoint mới trung bình các tọa độ của mọi điểm trong một cụm
ClusterMột nhóm các mục, thường là các thể hiện DataPoint
Cluster.empty()Trả về singleton cụm trống chia sẻ
Cluster.contains()Kiểm tra xem một mục có nằm trong cụm không
Cluster.clone()Trả về một bản sao độc lập của cụm
Cluster.countSố lượng mục hiện có trong cụm
ClusterCollectionĐóng gói một danh sách các thể hiện Cluster thành một bộ sưu tập

Xem thêm

 Tiếng Việt