Raggruppamento di punti dati
Clustering di punti dati
DataPoint, Cluster e ClusterCollection sono un piccolo toolkit generico per il clustering gerarchico-aggregativo fornito con Aspose.PDF FOSS per Python. Sono primitive generiche per il raggruppamento dei dati — un punto con coordinate e etichetta, un gruppo di elementi e una collezione di gruppi — piuttosto che una funzionalità specifica dei documenti PDF; nulla in questo modulo legge o scrive contenuti PDF. Usali quando il tuo codice deve raggruppare valori numerici (ad esempio, misurazioni già estratte da un documento) in cluster e riassumere un cluster con il suo centroide.
Rappresentazione di un punto dati
DataPoint associa un name identificativo a una lista value di coordinate numeriche. Entrambi sono esposti come DataPoint.name e DataPoint.value dopo la costruzione.
Creazione e copia di cluster
Cluster avvolge una lista opzionale di elementi in un unico gruppo. Cluster.count indica quanti elementi contiene attualmente il cluster, Cluster.contains() verifica se un dato elemento è membro, e Cluster.clone() restituisce una copia indipendente supportata dalla propria lista di elementi. Cluster.empty() restituisce un’istanza condivisa, singleton, di cluster vuoto invece di allocarne una nuova ad ogni chiamata.
Raggruppamento di cluster in una collezione
ClusterCollection avvolge un elenco opzionale di istanze Cluster in un’unica collezione, fornendoti un unico oggetto da passare quando una funzione deve accettare o restituire più di un cluster alla volta.
Calcolo del centroide di un cluster
DataPoint.get_centroid() calcola la media delle coordinate di ogni punto dati in un Cluster, posizione per posizione, e restituisce un nuovo DataPoint che rappresenta il centroide. Ogni punto nel cluster deve avere lo stesso numero di dimensioni in DataPoint.value affinché la media abbia senso.
Suggerimenti e migliori pratiche
- Mantieni ogni elenco
DataPoint.valuedella stessa lunghezza all’interno di un cluster —DataPoint.get_centroid()calcola la media delle coordinate posizione per posizione, quindi dimensioni non corrispondenti producono un centroide fuorviante. - Usa
Cluster.empty()per un cluster vuoto condiviso e singleton invece di costruire un nuovo cluster vuoto quando ti serve solo un valore segnaposto. - Chiama
Cluster.clone()prima di modificare un cluster di cui hai ancora bisogno dell’originale altrove — il cloning copia l’elenco degli elementi anziché crearne un alias. - Ricorri a
ClusterCollectionquando una funzione deve accettare o restituire più di unClustercome valore unico. - Queste classi sono utility generiche, non una funzionalità di parsing PDF — abbinale alla tua logica per produrre i valori
DataPointdai dati del documento.
Problemi comuni
| Problema | Cause | Correzione |
|---|---|---|
DataPoint.get_centroid() produce un centroide con un numero di valori inatteso | I punti dati nel cluster hanno liste DataPoint.value di lunghezze diverse | Assicurati che ogni DataPoint aggiunto a un Cluster abbia la stessa dimensionalità |
Cluster.contains() restituisce False per un valore che ti aspetti sia presente | L’appartenenza viene verificata direttamente contro gli oggetti elemento memorizzati, quindi due istanze DataPoint costruite separatamente con lo stesso nome e valore non vengono trattate automaticamente come uguali nelle ricerche basate sull’identità | Riutilizza la stessa istanza di DataPoint, o confronta per DataPoint.name e DataPoint.value prima di presumere l’appartenenza |
| Modificando un cluster clonato si modifica anche l’originale | Cluster.clone() è stato saltato e lo stesso riferimento Cluster è stato condiviso invece di essere copiato | Chiama Cluster.clone() per primo ogni volta che un chiamante ha bisogno di una copia indipendente |
FAQ
Qual è la differenza tra Cluster e ClusterCollection?
Cluster contiene un elenco di elementi — tipicamente istanze di DataPoint — che appartengono a un gruppo. ClusterCollection contiene un elenco di oggetti Cluster: raggruppa i cluster insieme, non i singoli punti dati.
Il DataPoint.get_centroid() modifica il cluster che gli viene fornito?
No. Legge gli elementi già presenti nel Cluster fornito e restituisce un nuovo DataPoint per il centroide; il cluster di origine e i suoi elementi rimangono invariati.
Questa funzionalità di clustering è specifica per i contenuti PDF?
No. DataPoint, Cluster e ClusterCollection sono primitive di raggruppamento numerico generiche fornite all’interno del pacchetto aspose_pdf. Non leggono pagine, testo o qualsiasi altra struttura PDF da sole — operano esclusivamente sui valori con cui le costruisci.
Perché Cluster.empty() restituisce la stessa istanza ogni volta?
Cluster.empty() restituisce un singleton condiviso in modo che le chiamate ripetute per “no cluster” non allocino un nuovo oggetto ad ogni chiamata.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
DataPoint | Un punto denominato che contiene una lista di coordinate numeriche |
DataPoint.name | Il nome identificativo del punto |
DataPoint.value | L’elenco numerico delle coordinate del punto |
DataPoint.get_centroid() | Restituisce un nuovo DataPoint che media le coordinate di tutti i punti in un cluster |
Cluster | Un gruppo di elementi, tipicamente istanze di DataPoint |
Cluster.empty() | Restituisce il singleton del cluster vuoto condiviso |
Cluster.contains() | Verifica se un elemento è nel cluster |
Cluster.clone() | Restituisce una copia indipendente del cluster |
Cluster.count | Il numero di elementi attualmente nel cluster |
ClusterCollection | Avvolge un elenco di istanze Cluster in un’unica raccolta |