Grupowanie punktów danych

Grupowanie punktów danych

Klasteryzacja punktów danych

DataPoint, Cluster i ClusterCollection to mały, ogólnego przeznaczenia zestaw narzędzi do hierarchicznego grupowania aglomeracyjnego, dołączony do Aspose.PDF FOSS dla Python. Są to ogólne prymitywy grupowania danych — punkt współrzędno-etykietowy, grupa elementów i kolekcja grup — a nie funkcja specyficzna dla dokumentu PDF; nic w tym module nie odczytuje ani nie zapisuje treści PDF. Użyj ich, gdy Twój własny kod musi grupować wartości liczbowe (na przykład pomiary, które już wyodrębniłeś z dokumentu) w klastry i podsumować klaster za pomocą jego środka ciężkości.


Reprezentowanie punktu danych

DataPoint łączy identyfikujący name z value listą współrzędnych liczbowych. Oba są udostępniane jako DataPoint.name i DataPoint.value po konstrukcji.


Tworzenie i kopiowanie klastrów

Cluster opakowuje opcjonalną listę elementów w pojedynczą grupę. Cluster.count raportuje, ile elementów klaster aktualnie zawiera, Cluster.contains() sprawdza, czy dany element jest członkiem, a Cluster.clone() zwraca niezależną kopię opartą na własnej liście elementów. Cluster.empty() zwraca współdzieloną, jedyną instancję pustego klastra zamiast alokować nową przy każdym wywołaniu.


Grupowanie klastrów w kolekcji

ClusterCollection opakowuje opcjonalną listę instancji Cluster w jedną kolekcję, dając Ci jeden obiekt do przekazywania, gdy funkcja musi przyjmować lub zwracać więcej niż jeden klaster jednocześnie.


Obliczanie centroidu klastra

DataPoint.get_centroid() oblicza średnią współrzędnych każdego punktu danych w Cluster, pozycję po pozycji, i zwraca nowy DataPoint reprezentujący centroid. Każdy punkt w klastrze musi mieć taką samą liczbę wymiarów w DataPoint.value, aby średnia miała sens.


Wskazówki i najlepsze praktyki

  • Utrzymuj każdą listę DataPoint.value o takiej samej długości w obrębie klastra — DataPoint.get_centroid() oblicza średnie współrzędne pozycję po pozycji, więc niezgodne wymiary powodują wprowadzający w błąd centroid.
  • Użyj Cluster.empty() jako współdzielonego, jedynkowego pustego klastra zamiast tworzyć nowy pusty klaster, gdy potrzebujesz tylko wartość zastępczą.
  • Wywołaj Cluster.clone() przed modyfikacją klastra, którego oryginał potrzebujesz w innym miejscu — klonowanie kopiuje listę elementów zamiast tworzyć alias.
  • Użyj ClusterCollection, gdy funkcja musi przyjmować lub zwracać więcej niż jeden Cluster jako pojedynczą wartość.
  • Te klasy są ogólnymi narzędziami, a nie funkcją parsowania PDF — połącz je ze swoją własną logiką generowania wartości DataPoint z danych dokumentu.

Typowe problemy

ProblemPrzyczynaNaprawa
DataPoint.get_centroid() generuje centroid z nieoczekiwaną liczbą wartościPunkty danych w klastrze mają listy DataPoint.value o różnych długościachUpewnij się, że każdy DataPoint dodany do Cluster ma tę samą wymiarowość
Cluster.contains() zwraca False dla wartości, którą oczekujesz, że będzie obecnaCzłonkostwo jest sprawdzane bezpośrednio względem przechowywanych obiektów elementów, więc dwie osobno skonstruowane instancje DataPoint o tej samej nazwie i wartości nie są automatycznie traktowane jako równe przy wyszukiwaniach opartych na tożsamościUżyj ponownie tej samej instancji DataPoint lub porównaj za pomocą DataPoint.name i DataPoint.value, zanim założysz przynależność
Modyfikacja sklonowanego klastra zmienia również oryginałCluster.clone() został pominięty, a ta sama referencja Cluster została współdzielona zamiast skopiowanaWywołaj Cluster.clone() najpierw, gdy wywołujący potrzebuje niezależnej kopii

FAQ

Jaka jest różnica między Cluster a ClusterCollection?

Cluster zawiera listę elementów — zazwyczaj instancje DataPoint — które należą do jednej grupy. ClusterCollection zawiera listę obiektów Cluster: grupuje klastry razem, a nie pojedyncze punkty danych.

Czy DataPoint.get_centroid() modyfikuje podany klaster?

Nie. Odczytuje elementy już znajdujące się w dostarczonym Cluster i zwraca nowy DataPoint dla centroidu; źródłowy klaster i jego elementy pozostają niezmienione.

Czy ta funkcja grupowania jest specyficzna dla treści PDF?

No. DataPoint, Cluster i ClusterCollection są ogólnymi prymitywami do grupowania liczb, dostarczanymi w pakiecie aspose_pdf. Nie odczytują one stron, tekstu ani żadnej innej struktury PDF — działają wyłącznie na wartościach, które im przekazujesz.

Dlaczego Cluster.empty() zwraca tę samą instancję za każdym razem?

Cluster.empty() zwraca współdzielony singleton, aby wielokrotne wywołania dla „no cluster” nie alokowały nowego obiektu przy każdym wywołaniu.


API Reference Podsumowanie

Klasa/MetodaOpis
DataPointNazwany punkt przechowujący listę współrzędnych numerycznych
DataPoint.nameIdentyfikująca nazwa punktu
DataPoint.valueLista numerycznych współrzędnych punktu
DataPoint.get_centroid()Zwraca nowy DataPoint będący średnią współrzędnych wszystkich punktów w klastrze
ClusterGrupa elementów, zazwyczaj instancje DataPoint
Cluster.empty()Zwraca współdzielony pusty klaster singleton
Cluster.contains()Sprawdza, czy element znajduje się w klastrze
Cluster.clone()Zwraca niezależną kopię klastra
Cluster.countLiczba elementów aktualnie znajdujących się w klastrze
ClusterCollectionOpakowuje listę instancji Cluster w jedną kolekcję

Zobacz także

 Polski