شماره تماس 09336863931 | 09178169907 پست الکترونیک info@provid.ir

الگوریتم خوشه بندی کا میانگین در سی شارپ #12

در این پست از وبسایت پرووید با قسمت دوازدهم از سری آموزشی “پیاده سازی الگوریتم خوشه بندی کا-میانگین در سی شارپ” در خدمت شما هستیم. به ادامه ی مطلب بروید.

صدا کردن (Call) متدهای تعریف شده در قسمت قبلی

حالا که تمامی قسمت های الگوریتم رو ساختیم و کنار هم گذاشتیم وقت اینه که کار خوشه بندی رو انجام بدیم. متدی که خوشه بندی رو انجام میده کارش خیلی ساده ست. در واقع ما از قسمت هایی که قبلاً ساختیم استفاده می کنیم و کار خوشه بندی رو انجام میدیم. به کد زیر دقت کنید:

 


public void Cluster()
{
bool _changed = true;
bool _success = true;
InitializeCentroids();

int maxIteration = _normalizedDataToCluster.Count * 10;
int _threshold = 0;
while (success == true && _changed == true && _threshold < maxIteration)
{
++_threshold;
_success = UpdateDataPointMeans();
_changed = UpdateClusterMembership();
}
}

اول دوتا متغیر بولین تعریف شده که دوتاشون مقدار true گرفتند. متغیر _success با خروجی متد UpdateDataPointMeans تنظیم شده. بهتون پیشنهاد می کنم که قسمت های قبلی این آموزش رو بخوانید تا متوجه بشید کار این متد چی هست و چه موقع مقدار true یا false بر میگردونه. به علاوه، متغیر _changed با خروجی متد UpdateClusterMembership تنظیم میشه. این متد رو توی قسمت های قبلی این آموزش معرفی کردیم. متغیر maxIteration به عنوان آستانه ی حداکثر تکرار تعریف شده. یعنی اینکه ما حداکثر به این تعداد بار خوشه بندی رو انجام میدیم. و نهایتاً _threshold که با مقدار صفر تنظیم شده و هر دفعه مقدارش با متغیر maxIteration چک میشه میشه.

حالاً به حلقه ی while و شرطش دقت کنید. سه تا شرط برای تکرار این حلقه تعریف شده. اول اینکه _success == true یعنی اینکه خروجی UpdateDataPointMeans باید true باشه. خروجی این متد وقتی true میشه که همه ی خوشه ها لااقل یک عنصر داشته باشن. به عبارت دیگر، اگر در هر مرحله ای از الگوریتم یکی از خوشه ها خالی باشه، الگوریتم متوقف میشه. شرط بعدی اینه که _changed == true باشه. این متغیر در درون حلقه ی تکرار با خروجی متد UpdateClusterMembership تنظیم میشه. خروجی این متد زمانی true هست که لااقل یکی از DataPoint ها بین خوشه ها جابجا بشن. به عبارت دیگر، اگر در هر مرحله ای از خوشه بندی هیچ جابجایی انجام نشه، الگوریتم به کار خودش پایان میده. شرط آخر هم اینه که حلقه ی تکرارمون بیش از حد آستانه اجرا نشه. به عبارت دیگر، تا وقتی _threshold < maxIteration کار رو ادامه میدیم. چون ممکنه درون حلقه ی نامتنهایی گیر بیفتیم. حالا در هر مرحله از حلقه ی تکرار، اول مقدار _threshold رو یک واحد افزایش میدیم. بعد، متدهای UpdateDataPointMeans و UpdateClusterMembership رو اجرا می کنیم. یعنی هم میانگین خوشه ها هم حساب می کنیم و هم جابجایی DataPoint ها در خوشه ها رو انجام میدیم.

خب، به نظرم به اندازه ی کافی برای این قسمت صحبت کردیم. اگر موافق باشید قسمت های بعدی رو توی پست بعدی ادامه بدیم.

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *