Mengelompokkan Titik Data
Mengelompokkan Titik Data
DataPoint, Cluster, dan ClusterCollection adalah toolkit kecil yang bersifat umum untuk clustering hierarkis-aglomeratif yang disertakan dengan Aspose.PDF FOSS untuk Python. Mereka merupakan primitif pengelompokan data generik — sebuah titik koordinat-dan-label, sekumpulan item, dan koleksi grup — bukan fitur dokumen khusus PDF; tidak ada apa pun dalam modul ini yang membaca atau menulis konten PDF secara langsung. Gunakan mereka ketika kode Anda perlu mengelompokkan nilai numerik (misalnya, pengukuran yang sudah Anda ekstrak dari dokumen) ke dalam klaster dan merangkum sebuah klaster dengan centroidnya.
Merepresentasikan Titik Data
DataPoint mempasangkan name yang mengidentifikasi dengan daftar value koordinat numerik. Kedua-duanya diekspos sebagai DataPoint.name dan DataPoint.value setelah konstruksi.
Membangun dan Menyalin Klaster
Cluster membungkus daftar item opsional menjadi satu grup. Cluster.count melaporkan berapa banyak item yang saat ini dimiliki klaster, Cluster.contains() memeriksa apakah item tertentu merupakan anggota, dan Cluster.clone() mengembalikan salinan independen yang didukung oleh daftar itemnya sendiri. Cluster.empty() mengembalikan instance klaster kosong singleton yang dibagikan alih-alih mengalokasikan yang baru pada setiap pemanggilan.
Mengelompokkan Klaster dalam Koleksi
ClusterCollection membungkus daftar opsional dari instance Cluster menjadi satu koleksi, memberikan Anda satu objek untuk dipass-around ketika sebuah fungsi perlu menerima atau mengembalikan lebih dari satu cluster sekaligus.
Menghitung Sentroid Cluster
DataPoint.get_centroid() menghitung rata-rata koordinat setiap titik data dalam Cluster, posisi demi posisi, dan mengembalikan DataPoint baru yang mewakili sentroid. Setiap titik dalam cluster harus memiliki jumlah dimensi yang sama dalam DataPoint.value agar rata-ratanya bermakna.
Tips dan Praktik Terbaik
- Pastikan setiap daftar
DataPoint.valuememiliki panjang yang sama dalam sebuah cluster —DataPoint.get_centroid()menghitung rata-rata koordinat posisi demi posisi, sehingga dimensi yang tidak cocok menghasilkan sentroid yang menyesatkan. - Gunakan
Cluster.empty()untuk cluster kosong singleton yang dibagikan alih-alih membuat cluster kosong baru ketika Anda hanya membutuhkan nilai placeholder. - Panggil
Cluster.clone()sebelum memodifikasi sebuah cluster yang masih Anda perlukan versi aslinya di tempat lain — cloning menyalin daftar item alih-alih membuat alias. - Gunakan
ClusterCollectionketika sebuah fungsi perlu menerima atau mengembalikan lebih dari satuClustersebagai satu nilai. - Kelas-kelas ini adalah utilitas umum, bukan fitur parsing PDF — padukan mereka dengan logika Anda sendiri untuk menghasilkan nilai
DataPointdari data dokumen.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
DataPoint.get_centroid() menghasilkan centroid dengan jumlah nilai yang tidak terduga | Poin data dalam klaster memiliki daftar DataPoint.value dengan panjang yang berbeda | Pastikan setiap DataPoint yang ditambahkan ke Cluster memiliki dimensi yang sama |
Cluster.contains() mengembalikan False untuk nilai yang Anda harapkan ada | Keanggotaan diperiksa langsung terhadap objek item yang disimpan, sehingga dua instance DataPoint yang dibuat secara terpisah dengan nama dan nilai yang sama tidak secara otomatis diperlakukan sama oleh pencarian berbasis identitas | Gunakan kembali instance DataPoint yang sama, atau bandingkan dengan DataPoint.name dan DataPoint.value sebelum menganggap keanggotaan |
| Memodifikasi klaster yang dikloning juga mengubah yang asli | Cluster.clone() dilewati dan referensi Cluster yang sama dibagikan alih-alih disalin | Panggil Cluster.clone() terlebih dahulu setiap kali pemanggil membutuhkan salinan independen |
FAQ
Apa perbedaan antara Cluster dan ClusterCollection?
Cluster menyimpan daftar item — biasanya instance DataPoint — yang termasuk dalam satu grup. ClusterCollection menyimpan daftar objek Cluster: ia mengelompokkan klaster bersama-sama, bukan titik data individu.
Apakah DataPoint.get_centroid() memodifikasi klaster yang diberikan?
Tidak. Ia membaca item yang sudah ada dalam Cluster yang disediakan dan mengembalikan DataPoint baru untuk pusat massa; klaster sumber dan itemnya tetap tidak berubah.
Apakah fungsionalitas pengelompokan ini khusus untuk konten PDF?
No. DataPoint, Cluster, dan ClusterCollection adalah primitif pengelompokan numerik generik yang dikirim dalam paket aspose_pdf. Mereka tidak membaca halaman, teks, atau struktur PDF lainnya secara langsung — mereka beroperasi semata-mata pada nilai yang Anda buat untuk mereka.
Mengapa Cluster.empty() mengembalikan instance yang sama setiap kali?
Cluster.empty() mengembalikan singleton bersama sehingga panggilan berulang untuk “no cluster” tidak membuat objek baru pada setiap panggilan.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
DataPoint | Sebuah titik bernama yang menyimpan daftar koordinat numerik |
DataPoint.name | Nama identifikasi titik |
DataPoint.value | Daftar koordinat numerik titik |
DataPoint.get_centroid() | Mengembalikan DataPoint baru yang meratakan koordinat setiap titik dalam sebuah cluster |
Cluster | Sekelompok item, biasanya berupa instance DataPoint |
Cluster.empty() | Mengembalikan singleton cluster kosong yang dibagikan |
Cluster.contains() | Memeriksa apakah sebuah item berada di dalam cluster |
Cluster.clone() | Mengembalikan salinan independen dari cluster |
Cluster.count | Jumlah item yang saat ini ada di dalam cluster |
ClusterCollection | Membungkus daftar instance Cluster menjadi satu koleksi |