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

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

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

تنظیم Centroid ها

همونطور که توی قسمت قبلی هم گفتم، Centroid ها به ما کمک میکنند تا داده ها رو خوشه بندی کنیم. در واقع، هر Centroid نشون دهنده ی یک خوشه است. حرف K در نام در الگوریتم (K-Means Clustering) نشون دهنده ی تعداد خوشه هاست. یکی از موضوعات در الگوریتم کا-میانگین اینه که در ابتدای کار باید یه سری Centroid تعریف کنیم. به عبارت دیگر، باید داده های اولیه رو توی یه سری خوشه قرار بدیم و الگوریتم رو شروع کنیم. روش های مختلفی برای ایجاد Centroid ها در ابتدای کار وجود داره. یکی از این روش ها قرار دادن تصادفی اونهاست. یعنی اینکه ما به طور تصادفی داده ها رو توی خوشه های متفاوتی قرار می دیم. باید تعداد خوشه های وارد شده توسط کاربر هم مد نظر قرار بگیره. به کد زیر دقت کنید:


private void InitializeCentroids()
{
Random random = new Random(_numberOfClusters);
for (int i = 0; i < _numberOfClusters; ++i)
{
_normalizedDataToCluster[i].Cluster = _rawDataToCluster[i].Cluster = i;
}
for (int i = _numberOfClusters; i < _normalizedDataToCluster.Count; i++)
{
_normalizedDataToCluster[i].Cluster = _rawDataToCluster[i].Cluster = random.Next(0, _numberOfClusters);
}
}

این کد وظیفش اینه که داده های ورودی رو توی یک سری خوشه ی تصادفی قرار بده. یکی از موضوعات الگوریتم کا-میانگین اینه که همه ی خوشه ها در هر لحظه از زمان باید حداقل یک عضو داشته باشن. حلقه ی اول این کار رو برای ما انجام میده. در واقع، حلقه ی اول به ازای تعداد خوشه ای که کاربر مد نظر داره، پروپرتی Cluster از DataPoint ها رو ست می کنه. حلقه ی دوم هم به طور تصادفی پروپرتی Cluster برای ما بقی DataPoint ها رو با در نظر گرفتن تعداد خوشه های مورد نظر کاربر پر میکنه.

تا حالا، ما تونستیم به طور تصادفی DataPoint ها رو توی خوشه های مختلف قرار بدیم و کنترل هم کردیم که هر خوشه لااقل یک DataPoint داشته باشه. توی پست بعدی کار رو ادامه می دیم.

نظر بدهید

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

CLOSE
CLOSE