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
ClusterCollectionnär en funktion behöver ta emot eller returnera mer än enClustersom 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
| Problem | Orsak | Lösning |
|---|---|---|
DataPoint.get_centroid() producerar ett centroid med ett oväntat antal värden | Datapunkter i klustret har DataPoint.value listor med olika längder | Se 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 finnas | Medlemskap 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å originalet | Cluster.clone() hoppades över och samma Cluster-referens delades istället för att kopieras | Anropa 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/Metod | Beskrivning |
|---|---|
DataPoint | En namngiven punkt som innehåller en lista med numeriska koordinater |
DataPoint.name | Punktens identifierande namn |
DataPoint.value | Punktens lista med numeriska koordinater |
DataPoint.get_centroid() | Returnerar ett nytt DataPoint som medelvärderar varje punkts koordinater i ett kluster |
Cluster | En 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.count | Antalet objekt som för närvarande finns i klustret |
ClusterCollection | Omsluter en lista med Cluster-instanser i en samling |