Regroupement de points de données
Regroupement de points de données
DataPoint, Cluster et ClusterCollection constituent une petite boîte à outils générale de clustering hiérarchique agglomératif fournie avec le FOSS Aspose.PDF pour Python. Ce sont des primitives génériques de regroupement de données — un point coordonnée-et-étiquette, un groupe d’éléments et une collection de groupes — plutôt qu’une fonctionnalité spécifique aux documents PDF; rien dans ce module ne lit ni n’écrit du contenu PDF. Utilisez-les lorsque votre propre code doit regrouper des valeurs numériques (par exemple, des mesures que vous avez déjà extraites d’un document) en clusters et résumer un cluster avec son centroïde.
Représenter un point de données
DataPoint associe un name d’identification à une liste value de coordonnées numériques. Les deux sont exposés sous les formes DataPoint.name et DataPoint.value après construction.
Construire et copier des clusters
Cluster enveloppe une liste optionnelle d’éléments dans un seul groupe. Cluster.count indique combien d’éléments le cluster contient actuellement, Cluster.contains() vérifie si un élément donné en fait partie, et Cluster.clone() renvoie une copie indépendante soutenue par sa propre liste d’éléments. Cluster.empty() renvoie une instance partagée, singleton, de cluster vide plutôt que d’allouer une nouvelle à chaque appel.
Regroupement de clusters dans une collection
ClusterCollection enveloppe une liste optionnelle d’instances Cluster dans une collection unique, vous donnant un objet à transmettre lorsque une fonction doit accepter ou renvoyer plus d’un cluster à la fois.
Calcul du centroïde d’un cluster
DataPoint.get_centroid() calcule la moyenne des coordonnées de chaque point de données dans un Cluster, position par position, et renvoie un nouveau DataPoint représentant le centroïde. Chaque point du cluster doit comporter le même nombre de dimensions dans DataPoint.value pour que la moyenne soit significative.
Conseils et meilleures pratiques
- Conservez chaque liste
DataPoint.valuede la même longueur au sein d’un cluster —DataPoint.get_centroid()calcule la moyenne des coordonnées position par position, de sorte que des dimensions incompatibles produisent un centroïde trompeur. - Utilisez
Cluster.empty()pour un cluster vide partagé et unique au lieu de créer un nouveau cluster vide lorsque vous avez simplement besoin d’une valeur de remplacement. - Appelez
Cluster.clone()avant de modifier un cluster dont vous avez encore besoin de l’original ailleurs — le clonage copie la liste d’éléments plutôt que de créer un alias. - Recourez à
ClusterCollectionlorsqu’une fonction doit accepter ou renvoyer plus d’unClustersous forme d’une valeur unique. - Ces classes sont des utilitaires génériques, pas une fonctionnalité d’analyse PDF — associez-les à votre propre logique pour produire les valeurs
DataPointà partir des données du document.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
DataPoint.get_centroid() produit un centroïde avec un nombre inattendu de valeurs | Les points de données du cluster ont des listes DataPoint.value de longueurs différentes | Assurez-vous que chaque DataPoint ajouté à un Cluster possède la même dimensionnalité |
Cluster.contains() renvoie False pour une valeur que vous vous attendiez à être présente | L’appartenance est vérifiée directement contre les objets d’éléments stockés, ainsi deux instances DataPoint construites séparément avec le même nom et la même valeur ne sont pas automatiquement considérées comme égales par les recherches basées sur l’identité | Réutilisez la même instance DataPoint, ou comparez par DataPoint.name et DataPoint.value avant de supposer l’appartenance |
| Modifier un cluster cloné modifie également l’original | Cluster.clone() a été ignoré et la même référence Cluster a été partagée au lieu d’être copiée | Appelez Cluster.clone() d’abord chaque fois qu’un appelant a besoin d’une copie indépendante |
FAQ
Quelle est la différence entre Cluster et ClusterCollection?
Cluster contient une liste d’éléments — généralement des instances DataPoint — qui appartiennent à un même groupe. ClusterCollection contient une liste d’objets Cluster: il regroupe les clusters ensemble, pas les points de données individuels.
Le DataPoint.get_centroid() modifie-t-il le cluster qui lui est fourni?
Non. Il lit les éléments déjà présents dans le Cluster fourni et renvoie un nouveau DataPoint pour le centroïde; le cluster source et ses éléments restent inchangés.
Cette fonctionnalité de clustering est-elle spécifique au contenu PDF?
N° DataPoint, Cluster et ClusterCollection sont des primitives génériques de regroupement numérique fournies dans le package aspose_pdf. Elles ne lisent pas les pages, le texte ou toute autre structure PDF elles-mêmes — elles fonctionnent uniquement sur les valeurs que vous leur fournissez.
Pourquoi Cluster.empty() renvoie-t-il la même instance à chaque fois?
Cluster.empty() renvoie un singleton partagé afin que les appels répétés pour “no cluster” n’allouent pas un nouvel objet à chaque appel.
API Reference Résumé
| Classe/Méthode | Description |
|---|---|
DataPoint | Un point nommé contenant une liste de coordonnées numériques |
DataPoint.name | Le nom d’identification du point |
DataPoint.value | La liste des coordonnées numériques du point |
DataPoint.get_centroid() | Renvoie un nouveau DataPoint moyennant les coordonnées de chaque point dans un groupe |
Cluster | Un groupe d’éléments, généralement des instances DataPoint |
Cluster.empty() | Renvoie le singleton de cluster vide partagé |
Cluster.contains() | Vérifie si un élément se trouve dans le cluster |
Cluster.clone() | Renvoie une copie indépendante du cluster |
Cluster.count | Le nombre d’éléments actuellement dans le cluster |
ClusterCollection | Enveloppe une liste d’instances Cluster dans une collection |