Adatpontok klaszterezése
Adatpontok klaszterezése
DataPoint, Cluster és ClusterCollection egy kis, általános célú hierarchikus agglomeratív klaszterező eszközkészlet, amely a Aspose.PDF FOSS csomag részeként érhető el a Python számára. Általános adatcsoportosító primitíveket biztosít — egy koordináta-és-címke pontot, egy elemekből álló csoportot és egy csoportgyűjteményt — nem PDF-specifikus dokumentumfunkcióként; ebben a modulban semmi nem olvas vagy ír PDF tartalmat. Használd őket, amikor a saját kódodnak numerikus értékeket kell csoportosítania (például már egy dokumentumból kinyert méréseket) klaszterekbe, és egy klasztert a középpontjával szeretnéd összefoglalni.
Adatpont ábrázolása
DataPoint egy azonosító name elemet párosít egy value numerikus koordinátákat tartalmazó listával. Mindkettő DataPoint.name és DataPoint.value néven érhető el a létrehozás után.
Klaszterek építése és másolása
Cluster egy opcionális elemlistát egyetlen csoportba csomagolja. Cluster.count visszaadja, hogy a klaszter jelenleg hány elemet tartalmaz, Cluster.contains() ellenőrzi, hogy egy adott elem tagja-e, és Cluster.clone() egy független másolatot ad vissza, amely saját elemlistával rendelkezik. Cluster.empty() egy megosztott, egyetlen példányú üres klaszter-instanciát ad vissza, ahelyett, hogy minden hívásnál új példányt allokálna.
Klaszterek csoportosítása egy gyűjteményben
ClusterCollection egy opcionális Cluster példányok listáját egyetlen gyűjteménybe csomagolja, így egy objektumot kapunk, amit átadhatunk, ha egy függvénynek egyszerre több klasztert kell elfogadnia vagy visszaadnia.
Klaszter középpontjának kiszámítása
DataPoint.get_centroid() minden adatpont koordinátáit egy Cluster esetén pozícióról pozícióra átlagolja, és visszaad egy új DataPoint objektumot, amely a középpontot reprezentálja. A klaszter minden pontjának ugyanannyi dimenzióval kell rendelkeznie a DataPoint.value esetében, hogy az átlag értelmes legyen.
Tippek és bevált gyakorlatok
- Tartsd minden
DataPoint.valuelistát azonos hosszúságúban egy klaszteren belül — aDataPoint.get_centroid()koordinátákat pozícióról pozícióra átlagolja, ezért a nem egyező dimenziók félrevezető középpontot eredményeznek. - Használd a
Cluster.empty()értéket egy megosztott, egyedülálló üres klaszterhez, ahelyett, hogy új üres klasztert hoznál létre, ha csak egy helykitöltő értékre van szükséged. - Hívd meg a
Cluster.clone()függvényt, mielőtt megváltoztatnád azt a klasztert, amelynek az eredeti példányra máshol még szükséged van — a klónozás az elemlistát másolja, nem csak alias-olja. - Használd a
ClusterCollectionértéket, amikor egy függvénynek egyszerre többClusterértéket kell elfogadnia vagy visszaadnia egyetlen értékként. - Ezek az osztályok általános segédprogramok, nem PDF-elemző funkció — párosítsd őket a saját logikáddal, hogy a dokumentum adatokból
DataPointértékeket állíts elő.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
DataPoint.get_centroid() egy váratlan számú értékkel rendelkező középpontot hoz létre | A klaszter adatpontjainak DataPoint.value listái különböző hosszúságúak | Biztosítsa, hogy minden DataPoint, amelyet egy Cluster-hez adnak, azonos dimenzióval rendelkezzen |
Cluster.contains() visszaad False-t egy olyan értékre, amelynek jelen kellene lennie | A tagságot közvetlenül a tárolt elemobjektumokkal ellenőrzik, így két külön-külön létrehozott DataPoint példány, amelyeknek ugyanaz a neve és értéke, nem lesznek automatikusan egyenlőnek tekintve az identitás-alapú keresések során | Használd újra ugyanazt a DataPoint példányt, vagy hasonlítsd össze a DataPoint.name és DataPoint.value alapján, mielőtt a tagságot feltételeznéd |
| Egy klónozott klaszter módosítása az eredetit is megváltoztatja. | A Cluster.clone() ki lett hagyva, és a Cluster ugyanaz a hivatkozás lett megosztva a másolás helyett. | Hívd meg először a Cluster.clone() függvényt, ha a hívónak független másolatra van szüksége. |
FAQ
Mi a különbség a Cluster és a ClusterCollection között?
Cluster egy elemlistát tartalmaz — általában DataPoint példányokat — amelyek egy csoporthoz tartoznak. ClusterCollection egy Cluster objektumok listáját tartalmaz: klasztereket csoportosít együtt, nem egyedi adatpontokat.
Módosítja a DataPoint.get_centroid() a kapott klasztert?
Nem. A már megadott Cluster elemeit olvassa, és egy új DataPoint objektumot ad vissza a középponthoz; a forrásklaszter és annak elemei változatlanok maradnak.
Ez a klaszterezési funkció PDF-tartalomra specifikus?
A DataPoint, Cluster és ClusterCollection általános numerikus klaszterezési primitívek, amelyek a aspose_pdf csomagban érkeznek. Ezek nem olvasnak oldalakat, szöveget vagy bármilyen más PDF struktúrát – kizárólag az általad megadott értékeken működnek.
Miért ad vissza a Cluster.empty() minden alkalommal ugyanazt a példányt?
Cluster.empty() egy megosztott singleton-t ad vissza, hogy az ismételt “no cluster” hívások ne foglaljanak új objektumot minden alkalommal.
API Reference Összegzés
| Osztály/Módszer | Leírás |
|---|---|
DataPoint | Egy elnevezett pont, amely numerikus koordináták listáját tartalmazza. |
DataPoint.name | A pont azonosító neve |
DataPoint.value | A pont numerikus koordináták listája |
DataPoint.get_centroid() | Visszaad egy új DataPoint objektumot, amely egy klaszterben lévő minden pont koordinátáit átlagolja |
Cluster | Egy csoport elemből, általában DataPoint példányok |
Cluster.empty() | Visszaadja a megosztott üres klaszter singleton objektumot |
Cluster.contains() | Ellenőrzi, hogy egy elem a klaszterben van-e |
Cluster.clone() | Visszaad egy független másolatot a klaszterről |
Cluster.count | A klaszterben jelenleg lévő elemek száma |
ClusterCollection | Egy Cluster példányok listáját egyetlen gyűjteménybe csomagolja |