Regroupement de points de données

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.value de 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 à ClusterCollection lorsqu’une fonction doit accepter ou renvoyer plus d’un Cluster sous 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èmeCauseCorrection
DataPoint.get_centroid() produit un centroïde avec un nombre inattendu de valeursLes points de données du cluster ont des listes DataPoint.value de longueurs différentesAssurez-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ésenteL’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’originalCluster.clone() a été ignoré et la même référence Cluster a été partagée au lieu d’être copiéeAppelez 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éthodeDescription
DataPointUn point nommé contenant une liste de coordonnées numériques
DataPoint.nameLe nom d’identification du point
DataPoint.valueLa 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
ClusterUn 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.countLe nombre d’éléments actuellement dans le cluster
ClusterCollectionEnveloppe une liste d’instances Cluster dans une collection

Voir aussi

 Français