Shlukování datových bodů
Shlukování datových bodů
DataPoint, Cluster a ClusterCollection jsou malý, obecný nástroj pro hierarchické aglomerativní shlukování, který je součástí Aspose.PDF FOSS pro Python. Jedná se o obecné primitivy pro seskupování dat—bod ssouřadnicemi aštítkem, skupinu položek akolekci skupin—spíše než o funkci specifickou pro PDF dokument; tento modul nečte ani nezapisuje obsah PDF. Použijte je, když váš vlastní kód potřebuje seskupovat číselné hodnoty (například měření, která jste již z dokumentu extrahovali) do shluků a shrnout shluk pomocí jeho středu.
Reprezentace datového bodu
DataPoint spojuje identifikační name s value seznamem číselných souřadnic. Oba jsou po vytvoření zpřístupněni jako DataPoint.name a DataPoint.value.
Vytváření a kopírování shluků
Cluster zabaluje volitelný seznam položek do jedné skupiny. Cluster.count uvádí, kolik položek shluk aktuálně obsahuje, Cluster.contains() kontroluje, zda je daná položka členem, a Cluster.clone() vrací nezávislou kopii podporovanou vlastním seznamem položek. Cluster.empty() vrací sdílenou, jedinečnou instanci prázdného shluku místo alokace nové při každém volání.
Seskupování shluků v kolekci
ClusterCollection zabaluje volitelný seznam instancí Cluster do jedné kolekce, což vám poskytne jeden objekt k předání, když funkce potřebuje přijmout nebo vrátit více než jeden shluk najednou.
Výpočet centroidu shluku
DataPoint.get_centroid() průměruje souřadnice každého datového bodu v Cluster, pozice po pozici, a vrací nový DataPoint představující centroid. Každý bod v shluku musí mít stejný počet dimenzí v DataPoint.value, aby byl průměr smysluplný.
Tipy a osvědčené postupy
- Udržujte každý seznam
DataPoint.valueve shluku stejné délky —DataPoint.get_centroid()průměruje souřadnice pozice po pozici, takže nesoulad dimenzí vede k zavádějícímu centroidu. - Použijte
Cluster.empty()pro sdílený, jedinečný prázdný shluk místo vytváření nového prázdného shluku, když potřebujete jen zástupnou hodnotu. - Zavolejte
Cluster.clone()před změnou shluku, jehož originál potřebujete jinde — klonování zkopíruje seznam položek místo jeho aliasování. - Použijte
ClusterCollection, když funkce potřebuje přijmout nebo vrátit více než jedenClusterjako jedinou hodnotu. - Tyto třídy jsou obecné utility, ne funkce pro parsování PDF — spojte je se svou vlastní logikou pro vytváření hodnot
DataPointz dat dokumentu.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
DataPoint.get_centroid() vytváří centroid s neočekávaným počtem hodnot | Data points in the cluster have DataPoint.value seznamy různých délek | Zajistěte, aby každý DataPoint přidaný do Cluster měl stejnou dimenzionalitu |
Cluster.contains() vrací False pro hodnotu, kterou očekáváte, že bude přítomna | Členství se kontroluje přímo proti uloženým objektům položek, takže dva samostatně vytvořené instance DataPoint se stejným názvem a hodnotou nejsou automaticky považovány za rovné při vyhledávání založeném na identitě | Znovu použijte stejnou instanci DataPoint nebo porovnávejte pomocí DataPoint.name a DataPoint.value, než předpokládáte příslušnost |
| Mutace klonovaného clusteru také mění originál. | Cluster.clone() byl přeskočen a místo kopírování byla sdílena stejná reference Cluster. | Nejprve zavolejte Cluster.clone(), kdykoli volající potřebuje nezávislou kopii. |
FAQ
Jaký je rozdíl mezi Cluster a ClusterCollection?
Cluster obsahuje seznam položek — typicky instancí DataPoint — které patří do jedné skupiny. ClusterCollection obsahuje seznam objektů Cluster: seskupuje shluky dohromady, nikoli jednotlivé datové body.
Mění DataPoint.get_centroid() shluk, který mu je předán?
Ne. Přečte položky, které již jsou v dodaném Cluster, a vrátí nový DataPoint pro centroid; zdrojový shluk a jeho položky zůstávají nezměněny.
Je tato funkce shlukování specifická pro obsah PDF?
Č. DataPoint, Cluster a ClusterCollection jsou obecné primitivy pro číselné shlukování dodávané v balíčku aspose_pdf. Nečtou samy stránky, text ani žádnou jinou strukturu PDF — fungují výhradně na hodnotách, které s nimi vytvoříte.
Proč Cluster.empty() vrací stejnou instanci pokaždé?
Cluster.empty() vrací sdílený singleton, aby opakovaná volání pro “no cluster” nealokovala nový objekt při každém volání.
API Reference Shrnutí
| Třída/Metoda | Popis: |
|---|---|
DataPoint | Pojmenovaný bod obsahující seznam číselných souřadnic. |
DataPoint.name | Identifikační název bodu |
DataPoint.value | Seznam číselných souřadnic bodu |
DataPoint.get_centroid() | Vrátí nový DataPoint průměrující souřadnice všech bodů ve shluku |
Cluster | Skupina položek, typicky DataPoint instancí |
Cluster.empty() | Vrátí sdílený singleton prázdného shluku |
Cluster.contains() | Kontroluje, zda je položka ve shluku |
Cluster.clone() | Vrací nezávislou kopii clusteru |
Cluster.count | Počet položek aktuálně v clusteru |
ClusterCollection | Zabaluje seznam instancí Cluster do jedné kolekce |