Klustrering av datapunkter

Klustrering av datapunkter

Klustrering av datapunkter

DataPoint, Cluster och ClusterCollection är ett litet, allmänt syftande verktyg för hierarkisk agglomerativ klustrering som levereras med Aspose.PDF FOSS för Python. De är generiska datagrupperingsprimitiver — en koordinat-och-etikettpunkt, en grupp av objekt och en samling av grupper — snarare än en PDF-specifik dokumentfunktion; ingenting i den här modulen läser eller skriver PDF-innehåll själv. Använd dem när din egen kod behöver gruppera numeriska värden (t.ex. mätningar som du redan har extraherat från ett dokument) i kluster och sammanfatta ett kluster med dess centroid.


Representera en datapunkt

DataPoint parar ett identifierande name med en value lista av numeriska koordinater. Båda exponeras som DataPoint.name och DataPoint.value efter konstruktion.


Bygga och kopiera kluster

Cluster omsluter en valfri lista av objekt till en enda grupp. Cluster.count rapporterar hur många objekt klustret för närvarande innehåller, Cluster.contains() kontrollerar om ett givet objekt är medlem, och Cluster.clone() returnerar en oberoende kopia med sin egen objektlista. Cluster.empty() returnerar en delad, singleton tom-kluster-instans snarare än att allokera en ny vid varje anrop.


Gruppera kluster i en samling

ClusterCollection omsluter en valfri lista med Cluster-instanser till en enda samling, vilket ger dig ett objekt att skicka runt när en funktion behöver ta emot eller returnera mer än ett cluster åt gången.


Beräkning av ett clusters centroid

DataPoint.get_centroid() beräknar medelvärdet av koordinaterna för varje datapunkt i ett Cluster, position för position, och returnerar en ny DataPoint som representerar centroiden. Varje punkt i clustret måste ha samma antal dimensioner i DataPoint.value för att medelvärdet ska vara meningsfullt.


Tips och bästa praxis

  • Behåll varje DataPoint.value-lista med samma längd inom ett cluster — DataPoint.get_centroid() beräknar medelvärdet av koordinaterna position för position, så missmatchande dimensioner ger en missvisande centroid.
  • Använd Cluster.empty() för ett delat, singleton-tomt cluster istället för att konstruera ett nytt tomt cluster när du bara behöver ett platshållarvärde.
  • Anropa Cluster.clone() innan du muterar ett cluster som du fortfarande behöver originalet av på annat håll — kloning kopierar objektlistan istället för att aliasera den.
  • Använd ClusterCollection när en funktion behöver ta emot eller returnera mer än en Cluster som ett enda värde.
  • Dessa klasser är generiska verktyg, inte en PDF-parsningsfunktion — kombinera dem med din egen logik för att producera DataPoint-värdena från dokumentdata.

Vanliga problem

ProblemOrsakLösning
DataPoint.get_centroid() producerar ett centroid med ett oväntat antal värdenDatapunkter i klustret har DataPoint.value listor med olika längderSe till att varje DataPoint som läggs till i en Cluster har samma dimensionalitet
Cluster.contains() returnerar False för ett värde du förväntar dig ska finnasMedlemskap kontrolleras direkt mot de lagrade objekten, så två separat konstruerade DataPoint-instanser med samma namn och värde behandlas inte automatiskt som lika vid identitetsbaserade uppslagningarÅteranvänd samma DataPoint-instans, eller jämför med DataPoint.name och DataPoint.value innan du antar medlemskap
Att mutera ett klonat kluster ändrar också originaletCluster.clone() hoppades över och samma Cluster-referens delades istället för att kopierasAnropa Cluster.clone() först när en anropar behöver en oberoende kopia

FAQ

Vad är skillnaden mellan Cluster och ClusterCollection?

Cluster innehåller en lista med objekt — vanligtvis DataPoint-instanser — som tillhör en grupp. ClusterCollection innehåller en lista med Cluster-objekt: den grupperar kluster tillsammans, inte enskilda datapunkter.

Modifierar DataPoint.get_centroid() det kluster som den får?

Nej. Den läser de objekt som redan finns i den medföljande Cluster och returnerar ett nytt DataPoint för centroiden; källklustret och dess objekt lämnas oförändrade.

Är denna klusterfunktionalitet specifik för PDF-innehåll?

Nr. DataPoint, Cluster och ClusterCollection är generiska numeriska klustringsprimitiver som levereras i aspose_pdf-paketet. De läser inte sidor, text eller någon annan PDF-struktur själva — de arbetar enbart på de värden du konstruerar dem med.

Varför returnerar Cluster.empty() samma instans varje gång?

Cluster.empty() returnerar en delad singleton så att upprepade anrop för “no cluster” inte allokerar ett nytt objekt vid varje anrop.


API Reference Sammanfattning

Klass/MetodBeskrivning
DataPointEn namngiven punkt som innehåller en lista med numeriska koordinater
DataPoint.namePunktens identifierande namn
DataPoint.valuePunktens lista med numeriska koordinater
DataPoint.get_centroid()Returnerar ett nytt DataPoint som medelvärderar varje punkts koordinater i ett kluster
ClusterEn grupp av objekt, vanligtvis DataPoint-instanser
Cluster.empty()Returnerar den delade tomma kluster-singletonen
Cluster.contains()Kontrollerar om ett objekt finns i klustret
Cluster.clone()Returnerar en oberoende kopia av klustret
Cluster.countAntalet objekt som för närvarande finns i klustret
ClusterCollectionOmsluter en lista med Cluster-instanser i en samling

Se även

 Svenska