دسته‌بندی نقاط داده

دسته‌بندی نقاط داده

خوشه‌بندی نقاط داده

DataPoint، Cluster و ClusterCollection یک جعبه‌ابزار کوچک و عمومی برای خوشه‌بندی سلسله‌مراتبی-چسباندنی هستند که همراه با Aspose.PDF FOSS برای Python ارائه می‌شوند. اینها Primitiveهای عمومی گروه‌بندی داده‌اند — یک نقطهٔ مختصات-و-برچسب، یک گروه از آیتم‌ها، و مجموعه‌ای از گروه‌ها — نه یک ویژگی خاص سند 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() را فراخوانی کنید — کلون کردن فهرست آیتم‌ها را کپی می‌کند نه اینکه به آن ارجاع دهد.
  • وقتی یک تابع لازم دارد بیش از یک Cluster را به‌عنوان یک مقدار واحد بپذیرد یا برگرداند، از ClusterCollection استفاده کنید.
  • این کلاس‌ها ابزارهای عمومی هستند، نه ویژگی‌ای برای تجزیه PDF — آن‌ها را با منطق خود برای تولید مقادیر DataPoint از داده‌های سند ترکیب کنید.

مسائل رایج

مشکلعلتراه‌حل
DataPoint.get_centroid() یک 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() یک تک‌نمونهٔ مشترک را برمی‌گرداند تا تماس‌های مکرر برای “بدون خوشه” در هر فراخوانی شیء جدیدی تخصیص ندهند.


API Reference خلاصه

کلاس/متدتوضیح
DataPointیک نقطهٔ نام‌دار که شامل فهرستی از مختصات عددی است
DataPoint.nameنام شناسایی نقطه
DataPoint.valueلیست مختصات عددی نقطه
DataPoint.get_centroid()یک DataPoint جدید را باز می‌گرداند که مختصات هر نقطه در یک خوشه را به‌صورت میانگین می‌گیرد
Clusterگروهی از موارد، که معمولاً نمونه‌های DataPoint هستند
Cluster.empty()نمونه تک‌تن خوشه‌ی خالی مشترک را باز می‌گرداند
Cluster.contains()بررسی می‌کند که آیا یک مورد در خوشه موجود است یا خیر
Cluster.clone()یک نسخه مستقل از خوشه را برمی‌گرداند
Cluster.countتعداد آیتم‌های موجود در خوشه
ClusterCollectionیک لیست از نمونه‌های Cluster را در یک مجموعه می‌پیچد

همچنین ببینید:

 فارسی