جاوا پلیٹو بلاکچین ڈیٹا انٹیلی جنس میں ڈیریچلیٹ پروسیس مکسچر ماڈل کے ساتھ کلسٹرنگ۔ عمودی تلاش۔ عی

جاوا میں ڈیریچلیٹ پروسیس مکسچر ماڈل کے ساتھ کلسٹرنگ

پچھلے مضامین میں ہم نے تفصیل سے بات کی تھی۔ ڈیریچلیٹ پروسیس مکسچر ماڈلز اور انہیں کلسٹر تجزیہ میں کیسے استعمال کیا جا سکتا ہے۔ اس مضمون میں ہم جاوا کے نفاذ کو پیش کریں گے۔ دو مختلف ڈی پی ایم ایم ماڈل: ڈیریچلیٹ ملٹی ویریٹ نارمل مکسچر ماڈل جو گاوسی ڈیٹا کو کلسٹر کرنے کے لیے استعمال کیا جا سکتا ہے اور ڈیریچلیٹ-ملٹینیومئل مکسچر ماڈل جو دستاویزات کو کلسٹر کرنے کے لیے استعمال کیا جاتا ہے۔ جاوا کوڈ GPL v3 لائسنس کے تحت اوپن سورس ہے اور اسے آزادانہ طور پر ڈاؤن لوڈ کیا جا سکتا ہے۔ Github کے.

اپ ڈیٹ: ڈیٹام باکس مشین لرننگ فریم ورک اب اوپن سورس اور مفت ہے۔ ڈاؤن لوڈ، اتارنا. جاوا میں Dirichlet Process Mixture Models کے نفاذ کو دیکھنے کے لیے com.datumbox.framework.machinelearning.clustering پیکیج دیکھیں۔

جاوا میں ڈیریچلیٹ پروسیس مکسچر ماڈل کا نفاذ

کوڈ Dirichlet Process Mixture Model کو Gibbs Sampler کے ساتھ نافذ کرتا ہے اور Apache Commons Math 3.3 کو بطور میٹرکس لائبریری استعمال کرتا ہے۔ یہ GPLv3 کے تحت لائسنس یافتہ ہے لہذا بلا جھجھک اسے استعمال کریں، اس میں ترمیم کریں اور اسے آزادانہ طور پر دوبارہ تقسیم کریں اور آپ جاوا کے نفاذ کو ڈاؤن لوڈ کر سکتے ہیں۔ Github کے. نوٹ کریں کہ آپ کلسٹرنگ کے طریقہ کار کے تمام نظریاتی حصے پچھلے 5 مضامین میں تلاش کر سکتے ہیں اور سورس کوڈ میں نفاذ کے لیے جاواڈوک کے تفصیلی تبصرے حاصل کر سکتے ہیں۔

ذیل میں ہم کوڈ پر ایک اعلیٰ سطح کی تفصیل درج کرتے ہیں:

1. ڈی پی ایم ایم کلاس

ڈی پی ایم ایم ایک تجریدی کلاس ہے اور مختلف مختلف ماڈلز کے لیے ایک بنیاد کی طرح کام کرتی ہے، لاگو کرتی ہے۔ چینی ریستوراں کا عمل اور پر مشتمل ہے منہدم گِبس سیمپلر. اس میں عوامی طریقہ کلسٹر() ہے جو ڈیٹاسیٹ کو پوائنٹس کی فہرست کے طور پر حاصل کرتا ہے اور کلسٹر تجزیہ کرنے کا ذمہ دار ہے۔ کلاس کے دوسرے مفید طریقے getPointAssignments() ہیں جو کلسٹرنگ مکمل ہونے کے بعد کلسٹر اسائنمنٹس کو بازیافت کرنے کے لیے استعمال ہوتے ہیں اور getClusterList() جو شناخت شدہ کلسٹرز کی فہرست حاصل کرنے کے لیے استعمال ہوتا ہے۔ DPMM جامد نیسٹڈ خلاصہ کلاس کلسٹر پر مشتمل ہے۔ اس میں پوائنٹس کے انتظام اور پوسٹرئیر پی ڈی ایف کے تخمینہ سے متعلق کئی تجریدی طریقے ہیں جو کلسٹر اسائنمنٹس کے تخمینہ کے لیے استعمال ہوتے ہیں۔

2. GaussianDPMM کلاس

GaussianDPMM Dirichlet ملٹی ویریٹ نارمل مکسچر ماڈل کا نفاذ ہے اور DPMM کلاس کو بڑھاتا ہے۔ اس میں وہ تمام طریقے شامل ہیں جو گاوسی مفروضے کے تحت امکانات کا اندازہ لگانے کے لیے درکار ہیں۔ مزید یہ کہ اس میں سٹیٹک نیسٹڈ کلاس کلسٹر ہے جو ڈی پی ایم ایم کلسٹر کلاس کے تمام تجریدی طریقوں کو لاگو کرتا ہے۔

3. MultinomialDPMM کلاس

MultinomialDPMM Dirichlet-Multinomial Mixture Model کو نافذ کرتا ہے اور DPMM کلاس کو بڑھاتا ہے۔ اسی طرح GaussianDPMM کلاس کی طرح، اس میں وہ تمام طریقے شامل ہیں جن کی ضرورت کثیر الثانی-Dirichlet مفروضے کے تحت امکانات کا تخمینہ لگانے کے لیے ہے اور اس میں جامد نیسٹڈ کلاس کلسٹر شامل ہے جو DPMM.Cluster کے تجریدی طریقوں کو لاگو کرتا ہے۔

4. SRS کلاس

SRS کلاس کا استعمال فریکوئنسی ٹیبل سے سادہ رینڈم سیمپلنگ انجام دینے کے لیے کیا جاتا ہے۔ اس کا استعمال گِبس سیمپلر کے ذریعے تکراری عمل کے ہر مرحلے میں نئے کلسٹر اسائنمنٹس کا تخمینہ لگانے کے لیے کیا جاتا ہے۔

5. پوائنٹ کلاس

پوائنٹ کلاس ایک ٹیوپل کے طور پر کام کرتا ہے جو اس کے آئی ڈی کے ساتھ ریکارڈ کے ڈیٹا کو اسٹور کرتا ہے۔

6. Apache Commons Math Lib

Apache Commons Math 3.3 lib میٹرکس ضرب کے لیے استعمال ہوتا ہے اور یہ ہمارے نفاذ کا واحد انحصار ہے۔

7. DPMME مثال کی کلاس

اس کلاس میں جاوا کے نفاذ کو استعمال کرنے کے طریقے کی مثالیں شامل ہیں۔

جاوا کے نفاذ کا استعمال کرتے ہوئے

کوڈ کا صارف مرکب ماڈل کے تمام پیرامیٹرز کو ترتیب دینے کے قابل ہے، بشمول ماڈل کی اقسام اور ہائپر پیرامیٹر۔ مندرجہ ذیل کوڈ کے ٹکڑوں میں ہم دیکھ سکتے ہیں کہ کس طرح الگورتھم کو شروع اور عمل میں لایا جاتا ہے:

List<Point> pointList = new ArrayList<>();
//add records in pointList

//Dirichlet Process parameter
Integer dimensionality = 2;
double alpha = 1.0;

//Hyper parameters of Base Function
int kappa0 = 0;
int nu0 = 1;
RealVector mu0 = new ArrayRealVector(new double[]{0.0, 0.0});
RealMatrix psi0 = new BlockRealMatrix(new double[][]{{1.0,0.0},{0.0,1.0}});

//Create a DPMM object
DPMM dpmm = new GaussianDPMM(dimensionality, alpha, kappa0, nu0, mu0, psi0);

int maxIterations = 100;
int performedIterations = dpmm.cluster(pointList, maxIterations);

//get a list with the point ids and their assignments
Map<Integer, Integer> zi = dpmm.getPointAssignments();

ذیل میں ہم ایک مصنوعی ڈیٹاسیٹ پر الگورتھم چلانے کے نتائج دیکھ سکتے ہیں جو 300 ڈیٹا پوائنٹس پر مشتمل ہے۔ پوائنٹس اصل میں 3 مختلف تقسیموں سے بنائے گئے تھے: N([10,50], I), N([50,10], I) اور N([150,100], I)۔

scatterplot1
شکل 1: ڈیمو ڈیٹاسیٹ کا سکیٹر پلاٹ

الگورتھم نے 10 تکرار تک چلنے کے بعد، اس نے درج ذیل 3 کلسٹر مراکز کی نشاندہی کی: [10.17، 50.11]، [49.99، 10.13] اور [149.97، 99.81]۔ آخر میں چونکہ ہم ہر چیز کو بایسیئن طریقے سے دیکھتے ہیں، اس لیے ہم نہ صرف کلسٹر سینٹرز کا واحد نقطہ تخمینہ فراہم کرنے کے قابل ہیں بلکہ ان کا استعمال کرتے ہوئے ان کے امکانات کی تقسیم بھی کر سکتے ہیں۔ فارمولا مساوات.

scatterplot2-ہیٹ میپ
شکل 2: کلسٹرز کے مراکز کے امکانات کا سکیٹر پلاٹ

مندرجہ بالا اعداد و شمار میں ہم ان امکانات کی منصوبہ بندی کرتے ہیں؛ سرخ علاقے کلسٹر کے مرکز ہونے کے زیادہ امکان کی نشاندہی کرتے ہیں اور سیاہ علاقے کم امکان کی نشاندہی کرتے ہیں۔

حقیقی دنیا کی ایپلی کیشنز میں جاوا کے نفاذ کو استعمال کرنے کے لیے آپ کو ایکسٹرنل کوڈ لکھنا چاہیے جو آپ کے اصل ڈیٹاسیٹ کو مطلوبہ فارمیٹ میں تبدیل کرتا ہے۔ مزید یہ کہ اگر آپ آؤٹ پٹ کو ویژولائز کرنا چاہتے ہیں جیسا کہ ہم اوپر دیکھتے ہیں تو اضافی کوڈ کی ضرورت پڑ سکتی ہے۔ آخر میں نوٹ کریں کہ اپاچی کامنز ریاضی کی لائبریری پروجیکٹ میں شامل ہے اور اس طرح ڈیمو کو چلانے کے لیے کسی اضافی ترتیب کی ضرورت نہیں ہے۔

اگر آپ کسی دلچسپ پروجیکٹ میں عمل درآمد کا استعمال کرتے ہیں تو ہمیں ایک لائن چھوڑ دیں اور ہم آپ کے پروجیکٹ کو اپنے بلاگ پر پیش کریں گے۔ اس کے علاوہ اگر آپ کو مضمون پسند ہے تو، براہ کرم ایک لمحہ نکالیں اور اسے ٹویٹر یا فیس بک پر شیئر کریں۔

ٹائم اسٹیمپ:

سے زیادہ ڈیٹا باکس