Кластеризація точок даних

Кластеризація точок даних

Кластеризація точок даних

DataPoint, Cluster та ClusterCollection — це невеликий, універсальний інструментарій для ієрархічної агломеративної кластеризації, що постачається разом з Aspose.PDF FOSS для Python. Вони є загальними примітивами групування даних — точка з координатами та міткою, група елементів і колекція груп — а не специфічною функцією PDF-документа; в цьому модулі нічого не читає і не записує вміст PDF. Використовуйте їх, коли ваш код потребує згрупувати числові значення (наприклад, вимірювання, які ви вже витягли з документа) у кластери та підсумувати кластер за допомогою його центроїда.


Представлення точки даних

DataPoint поєднує ідентифікуючий name зі value списком числових координат. Обидва доступні як DataPoint.name та DataPoint.value після створення.


Створення та копіювання кластерів

Cluster обгортає необов’язковий список елементів в одну групу. Cluster.count повідомляє, скільки елементів наразі містить кластер, Cluster.contains() перевіряє, чи є даний елемент членом, а Cluster.clone() повертає незалежну копію, що має власний список елементів. Cluster.empty() повертає спільний, одиничний екземпляр порожнього кластера, замість створення нового при кожному виклику.


Групування кластерів у колекції

ClusterCollection обгортає необов’язковий список екземплярів Cluster в одну колекцію, надаючи вам один об’єкт для передачі, коли функція повинна приймати або повертати одночасно більше одного кластера.


Обчислення центроїда кластера

DataPoint.get_centroid() обчислює середнє координат кожної точки даних у Cluster, позиція за позицією, і повертає новий DataPoint, що представляє центроїд. Кожна точка в кластері повинна мати однакову кількість вимірів у DataPoint.value, щоб середнє було змістовним.


Поради та кращі практики

  • Зберігайте кожен список DataPoint.value однакової довжини всередині кластера — DataPoint.get_centroid() обчислює середнє координат позиція за позицією, тому невідповідність розмірностей призводить до хибного центроїда.
  • Використовуйте Cluster.empty() для спільного, одиничного порожнього кластера замість створення нового порожнього кластера, коли вам потрібне лише значення-заповнювач.
  • Викличте Cluster.clone() перед зміною кластера, який вам ще потрібен в оригіналі в іншому місці — клонування копіює список елементів, а не створює псевдонім.
  • Використовуйте ClusterCollection, коли функція повинна приймати або повертати більше одного Cluster як єдине значення.
  • Ці класи — загальні утиліти, а не функція парсингу PDF — поєднайте їх зі своєю логікою для отримання значень DataPoint з даних документа.

Типові проблеми

ПроблемаПричинаВиправлення
DataPoint.get_centroid() створює центроїд з неочікуваною кількістю значеньТочки даних у кластері мають списки DataPoint.value різної довжиниПереконайтеся, що кожен DataPoint, доданий до Cluster, має однакову розмірність
Cluster.contains() повертає False для значення, яке ви очікуєте присутнімЧленство перевіряється безпосередньо проти збережених об’єктів елементів, тому два окремо створені екземпляри DataPoint з однаковими ім’ям та значенням не розглядаються автоматично як рівні при пошуку за ідентичністюПовторно використовуйте той самий екземпляр DataPoint, або порівнюйте за допомогою DataPoint.name та DataPoint.value, перш ніж припускати належність
Зміна клонованого кластера також змінює оригіналCluster.clone() було пропущено, і замість копії була використана та сама посилання ClusterВикличте Cluster.clone() спочатку, коли викликаючому потрібна незалежна копія

FAQ

У чому різниця між Cluster і ClusterCollection?

Cluster містить список елементів — зазвичай екземпляри DataPoint — які належать до однієї групи. ClusterCollection містить список об’єктів Cluster: він об’єднує кластери разом, а не окремі точки даних.

Чи змінює DataPoint.get_centroid() переданий йому кластер?

Ні. Він читає елементи, вже що в наданому Cluster, і повертає новий DataPoint для центроїда; вихідний кластер і його елементи залишаються незмінними.

Чи є ця функція кластеризації специфічною для вмісту PDF?

Ні. DataPoint, Cluster та ClusterCollection — це загальні примітиви числового кластерування, що постачаються в пакеті aspose_pdf. Вони не читають сторінки, текст або будь-яку іншу структуру PDF самі — вони працюють лише з значеннями, які ви їм передаєте.

Чому Cluster.empty() повертає один і той самий екземпляр кожного разу?

Cluster.empty() повертає спільний сінглтон, щоб повторні виклики для “no cluster” не створювали новий об’єкт щоразу.


API Reference Підсумок

Клас/МетодОпис
DataPointІменована точка, що містить список числових координат
DataPoint.nameІдентифікаційна назва точки
DataPoint.valueСписок числових координат точки
DataPoint.get_centroid()Повертає новий DataPoint, що усереднює координати всіх точок у кластері
ClusterГрупа елементів, зазвичай екземпляри DataPoint
Cluster.empty()Повертає спільний порожній кластер-синглтон
Cluster.contains()Перевіряє, чи є елемент у кластері
Cluster.clone()Повертає незалежну копію кластера
Cluster.countКількість елементів, що наразі знаходяться в кластері
ClusterCollectionОбгортає список екземплярів Cluster в одну колекцію

Дивіться також

 Українська