Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی

Python اور Scit-Learn کے ساتھ رینڈم فاریسٹ الگورتھم کے لیے حتمی گائیڈ

تعارف

رینڈم فارسٹ الگورتھم سب سے زیادہ لچکدار، طاقتور اور وسیع پیمانے پر استعمال ہونے والے الگورتھم میں سے ایک ہے درجہ بندی اور رجعت، ایک کے طور پر بنایا گیا ہے۔ فیصلے کے درختوں کا جوڑا.

اگر آپ ان سے واقف نہیں ہیں - پریشان ہونے کی کوئی بات نہیں، ہم ان تمام تصورات کا احاطہ کریں گے۔

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

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

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

فیصلہ درخت

آپ درخت کے نوڈس کو کیسے آباد کرتے ہیں؟ یہ کہاں ہے فیصلہ درخت توجہ میں آتے ہیں.

سب سے پہلے، ہم حمل کے حساب سے ریکارڈ کو تقسیم کر سکتے ہیں، اس کے بعد، ہم شہری یا دیہی علاقوں میں رہ کر تقسیم کر سکتے ہیں۔ غور کریں، کہ ہم یہ کام ایک مختلف ترتیب میں کر سکتے ہیں، ابتدا میں خواتین کی رہائش کے لحاظ سے اور بعد میں ان کی حمل کی حیثیت کے لحاظ سے تقسیم۔ اس سے، ہم دیکھ سکتے ہیں کہ درخت کا ایک موروثی درجہ بندی ہے۔ معلومات کو منظم کرنے کے علاوہ، ایک درخت معلومات کو درجہ بندی کے انداز میں ترتیب دیتا ہے - جس ترتیب سے معلومات ظاہر ہوتی ہے وہ اہمیت رکھتی ہے اور اس کے نتیجے میں مختلف درختوں کی طرف لے جاتی ہے۔

ذیل میں، درخت کی ایک مثال ہے جس کی وضاحت کی گئی ہے:

درخت کی تصویر میں، 7 مربع ہیں، ایک سب سے اوپر جس میں کل 100 خواتین ہیں، یہ سب سے اوپر والا مربع نیچے دو مربعوں سے جڑا ہوا ہے، جو خواتین کو ان کی 78 حاملہ اور 22 حاملہ کی تعداد کی بنیاد پر تقسیم کرتا ہے، اور پچھلے دونوں چوکوں سے چار مربع ہیں؛ اوپر والے ہر مربع سے دو جڑے ہوئے ہیں جو خواتین کو ان کے علاقے کی بنیاد پر تقسیم کرتے ہیں، حاملہ نہ ہونے کے لیے، 45 شہری علاقے میں، 33 دیہی علاقے میں اور حاملہ کے لیے، 14 دیہی علاقے میں اور 8 شہری علاقے میں رہتے ہیں۔ صرف ایک درخت کو دیکھ کر، ان تقسیموں کو سمجھنا اور یہ دیکھنا آسان ہے کہ ہر ایک "پرت" پچھلی سے کیسے اخذ کی گئی ہے، وہ پرتیں درخت ہیں۔ سطح، سطحیں بیان کرتی ہیں۔ گہرائی درخت کا:

Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی

اوپر کی تصویر میں دیکھیں کہ درخت کی پہلی سطح ہے۔ سطح 0 جہاں صرف ایک مربع ہے، اس کے بعد سطح 1 جہاں دو مربع ہیں، اور سطح 2 جہاں چار مربع ہیں۔ یہ ایک گہرائی 2 درخت.

سطح 0 میں وہ مربع ہے جو درخت کی ابتدا کرتا ہے، پہلا، جسے کہا جاتا ہے۔ جڑ نوڈ، اس جڑ میں دو ہیں۔ چائلڈ نوڈس سطح 1 میں، وہ ہیں والدین نوڈس لیول 2 میں چار نوڈس تک۔ دیکھیں کہ ہم اب تک جن "چوکوں" کا ذکر کر رہے ہیں، وہ دراصل کہلاتے ہیں۔ نوڈس; اور یہ کہ ہر پچھلا نوڈ مندرجہ ذیل نوڈس کا والدین ہے، یعنی اس کے بچے ہیں۔ ہر سطح کے چائلڈ نوڈز جن کے والدین ایک جیسے ہوتے ہیں کہلاتے ہیں۔ بہن بھائیوں کوجیسا کہ اگلی تصویر میں دیکھا جا سکتا ہے:

Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی

پچھلی تصویر میں، ہم سطح 1 کو بھی ظاہر کرتے ہیں۔ اندرونی نوڈس، ایک بار جب وہ جڑ اور آخری نوڈس کے درمیان ہوتے ہیں، جو ہیں۔ لیف نوڈس. لیف نوڈس درخت کا آخری حصہ ہوتے ہیں، اگر ہم ابتدائی 100 خواتین سے یہ بتائیں کہ کتنی حاملہ ہیں اور دیہی علاقوں میں رہتی ہیں، تو ہم پتوں کو دیکھ کر ایسا کر سکتے ہیں۔ لہذا پتوں پر نمبر پہلے تحقیقی سوال کا جواب دے گا۔

اگر خواتین کے نئے ریکارڈ موجود تھے، اور وہ درخت جو پہلے ان کی درجہ بندی کے لیے استعمال کیا جاتا تھا، اب یہ فیصلہ کرنے کے لیے استعمال کیا جاتا ہے کہ کیا عورت تحقیق کا حصہ بن سکتی ہے یا نہیں، کیا یہ اب بھی کام کرے گا؟ درخت ایک ہی معیار کا استعمال کرے گا، اور اگر ایک عورت حاملہ ہو اور دیہی علاقے میں رہ رہی ہو تو وہ حصہ لینے کی اہل ہو گی۔

Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی

اوپر کی تصویر کو دیکھ کر، ہم دیکھ سکتے ہیں کہ ہر درخت کے نوڈ کے سوالات کے جوابات - "کیا وہ ایک شریک ہے؟"، "کیا وہ حاملہ ہے؟"، "کیا وہ دیہی علاقے میں رہتی ہے؟" - ہاں، ہاں، اور ہاں، تو ایسا لگتا ہے کہ درخت کسی فیصلے کی طرف لے جا سکتا ہے، اس صورت میں، کہ عورت تحقیق میں حصہ لے سکتی ہے۔

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

نوٹ: کمپیوٹر سائنس میں درختوں کی کئی قسمیں ہیں، جیسے بائنری ٹری، جنرل ٹری، اے وی ایل ٹری، اسپلے ٹری، ریڈ بلیک ٹری، بی ٹری وغیرہ۔ یہاں ہم عام خیال دینے پر توجہ مرکوز کر رہے ہیں کہ فیصلہ ٹری کیا ہے۔ . اگر یہ a کے جواب پر منحصر ہے۔ جی ہاں or نہیں ہر نوڈ کے لیے سوال اور اس طرح ہر نوڈ کے پاس ہے۔ زیادہ سے زیادہ دو بچے، جب اس طرح ترتیب دیا جاتا ہے کہ "چھوٹے" نوڈس بائیں طرف ہیں، یہ فیصلہ کے درختوں کی درجہ بندی کرتا ہے بائنری درخت.

پچھلی مثالوں میں، مشاہدہ کریں کہ درخت کیسے ہو سکتا ہے۔ درجہ بندی کرنا شریک یا غیر شریک کے طور پر نیا ڈیٹا، یا سوالات کو بھی تبدیل کیا جا سکتا ہے - "شرکاء کی تعداد کتنی ہے؟"، "کتنے حاملہ ہیں؟"، "کتنے لوگ دیہی علاقے میں رہتے ہیں؟" - ہمیں تلاش کرنے کے لیے رہنمائی کرتا ہے۔ مقدار حاملہ شرکاء کی جو دیہی علاقے میں رہتی ہیں۔

جب ڈیٹا کی درجہ بندی کی جاتی ہے، تو اس کا مطلب ہے کہ درخت کارکردگی کا مظاہرہ کر رہا ہے۔ درجہ بندی کام، اور جب اعداد و شمار کی مقدار مل جاتی ہے، تو درخت کارکردگی کا مظاہرہ کر رہا ہے۔ رجعت کام اس کا مطلب ہے کہ فیصلہ ٹری دونوں کاموں کے لیے استعمال کیا جا سکتا ہے – درجہ بندی اور رجعت۔

اب جب کہ ہم سمجھتے ہیں کہ فیصلہ ساز درخت کیا ہے، اسے کیسے استعمال کیا جا سکتا ہے، اور اسے بیان کرنے کے لیے کون سا نام استعمال کیا جاتا ہے، ہم اس کی حدود کے بارے میں سوچ سکتے ہیں۔

بے ترتیب جنگلات کو سمجھنا

فیصلہ کا کیا ہوگا اگر کچھ شریک شہری اور دیہی علاقوں کے درمیان تقسیم پر رہتے ہیں؟ کیا درخت اس ریکارڈ کو دیہی یا شہری میں شامل کرے گا؟ اس ڈیٹا کو ہمارے موجودہ ڈھانچے میں فٹ کرنا مشکل لگتا ہے، کیونکہ یہ کافی حد تک واضح ہے۔

اس کے علاوہ، اگر ایک کشتی پر رہنے والی عورت تحقیق میں حصہ لے تو کیا اسے دیہی سمجھا جائے گا یا شہری؟ پچھلے کیس کی طرح، درخت میں دستیاب اختیارات پر غور کرتے ہوئے درجہ بندی کرنا ایک چیلنجنگ ڈیٹا پوائنٹ ہے۔

فیصلے کے درخت کی مثال کے بارے میں تھوڑا سا مزید سوچنے سے، ہم یہ دیکھ سکتے ہیں کہ یہ نئے اعداد و شمار کو درست طریقے سے درجہ بندی کر سکتا ہے کیونکہ یہ درخت کے پہلے سے موجود پیٹرن کی پیروی کرتا ہے - لیکن جب ایسے ریکارڈ موجود ہوں جو ابتدائی اعداد و شمار سے مختلف ہوں جو درخت کی تعریف کرتے ہیں، درخت کا ڈھانچہ بہت سخت ہے، جس کی وجہ سے ریکارڈ کی درجہ بندی نہیں کی جا سکتی۔

اس کا مطلب یہ ہے کہ فیصلہ کرنے والا درخت اپنے امکانات میں سخت اور محدود ہوسکتا ہے۔ ایک مثالی فیصلہ ساز درخت زیادہ لچکدار اور زیادہ باریک بینی سے نظر نہ آنے والے ڈیٹا کو ایڈجسٹ کرنے کے قابل ہوگا۔

حل: جس طرح "آنکھوں کے دو جوڑے ایک سے بہتر دیکھتے ہیں"، دو ماڈلز عام طور پر ایک سے زیادہ درست جواب کے ساتھ آتے ہیں۔ علمی نمائندگی میں تنوع (درخت کے ڈھانچے میں انکوڈ شدہ) کے حساب سے، ایک سے زیادہ ملتے جلتے درختوں کے درمیان تھوڑا سا مختلف ڈھانچے کی سختی اب اتنی محدود نہیں ہے، کیونکہ ایک درخت کی خامیاں دوسرے درخت کے ذریعے "بنیاد" کی جا سکتی ہیں۔ بہتوں کو ملا کر درختوں ایک ساتھ، ہم ایک حاصل کرتے ہیں جنگل.

ابتدائی سوال کے جواب کے بارے میں، ہم پہلے ہی جانتے ہیں کہ اسے درخت کے پتوں میں انکوڈ کیا جائے گا - لیکن جب ہمارے پاس ایک کی بجائے بہت سے درخت ہوں تو کیا تبدیلی آتی ہے؟

اگر درجہ بندی کے لیے درختوں کو جوڑ دیا جائے، تو اس کا نتیجہ جوابات کی اکثریت سے بیان کیا جائے گا، اسے کہتے ہیں۔ اکثریتی ووٹنگ; اور رجعت کی صورت میں، جنگل میں ہر درخت کی طرف سے دیا گیا نمبر ہوگا۔ اوسط.

Ensemble لرننگ اور ماڈل ensembles

یہ طریقہ کے طور پر جانا جاتا ہے ensemble سیکھنے. ensemble لرننگ پر عمل کرتے وقت، آپ کسی بھی الگورتھم کو آپس میں ملا سکتے ہیں، جب تک کہ آپ اس بات کو یقینی بنا سکتے ہیں کہ آؤٹ پٹ کو پارس کیا جا سکتا ہے اور دوسرے آؤٹ پٹ (یا تو دستی طور پر، یا موجودہ لائبریریوں کا استعمال کرتے ہوئے)۔ عام طور پر، آپ ایک ہی قسم کے متعدد ماڈلز کو ایک ساتھ جوڑتے ہیں، جیسے کہ ایک سے زیادہ فیصلہ کرنے والے درخت، لیکن آپ صرف ایک ہی ماڈل کی قسم کے جوڑ میں شامل ہونے تک محدود نہیں ہیں۔

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

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

وسیع پیمانے پر استعمال کو دیکھتے ہوئے، Scikit-Learn جیسی لائبریریوں نے ریپرز کو لاگو کیا ہے RandomForestRegressorاور RandomForestClassifiers، ان کے اپنے فیصلے کے درخت کے نفاذ کے اوپر بنایا گیا ہے، تاکہ محققین کو ان کے اپنے جوڑ بنانے سے بچنے کی اجازت دی جا سکے۔

آئیے بے ترتیب جنگلوں میں غوطہ لگائیں!

رینڈم فارسٹ الگورتھم کیسے کام کرتا ہے؟

رینڈم فارسٹ الگورتھم کو عمل میں لاتے وقت درج ذیل بنیادی اقدامات شامل ہیں:

  1. بے ترتیب ریکارڈز کی ایک بڑی تعداد کو چنیں، یہ ڈیٹا سیٹ سے کوئی بھی نمبر ہو سکتا ہے، جیسے کہ 4، 20، 76، 150، یا یہاں تک کہ 2.000 (جسے کہا جاتا ہے) N ریکارڈز)۔ تعداد کا انحصار ڈیٹاسیٹ کی چوڑائی، جتنی چوڑائی، اتنی بڑی پر ہوگا۔ N ہو سکتا ہے. یہ ہے جہاں بے ترتیب الگورتھم کے نام میں حصہ آتا ہے!
  2. ان کی بنیاد پر فیصلہ کن درخت بنائیں N بے ترتیب ریکارڈ؛
  3. الگورتھم کے لیے بیان کردہ درختوں کی تعداد، یا جنگل میں درختوں کی تعداد کے مطابق، اقدامات 1 اور 2 کو دہرائیں۔
  4. مرحلہ 3 کے بعد، آخری مرحلہ آتا ہے، جو نتائج کی پیش گوئی کر رہا ہے:
    • درجہ بندی کی صورت میں: جنگل کا ہر درخت اس زمرے کی پیشین گوئی کرے گا جس سے نیا ریکارڈ تعلق رکھتا ہے۔ اس کے بعد، نیا ریکارڈ اس زمرے کو تفویض کیا جاتا ہے جو اکثریتی ووٹ حاصل کرتا ہے۔
    • رجعت کی صورت میں: جنگل میں ہر درخت نئے ریکارڈ کے لیے ایک قدر کی پیشین گوئی کرتا ہے، اور حتمی پیشین گوئی کی قدر کا حساب جنگل کے تمام درختوں کی طرف سے پیش گوئی کی گئی تمام اقدار کی اوسط لے کر کیا جائے گا۔

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

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

درخت کیسے کام کرتے ہیں اس کے بارے میں بصیرت کے ساتھ، اور بے ترتیب جنگلات کی سمجھ کے ساتھ - صرف ایک چیز باقی رہ گئی ہے کہ وہ ڈیٹا پر ان کی تعمیر، تربیت اور ٹیوننگ کی مشق کریں!

Scikit-Learn کے ساتھ رینڈم فارسٹ ماڈلز کی تعمیر اور تربیت

اب تک استعمال ہونے والی مثالوں کی ایک وجہ حمل، رہنے کی جگہ اور خواتین شامل ہیں۔

2020 میں، بنگلہ دیش کے محققین نے دیکھا کہ حاملہ خواتین میں اموات کی شرح اب بھی بہت زیادہ ہے، خاص طور پر دیہی علاقوں میں رہنے والی خواتین کے بارے میں۔ اس کی وجہ سے، انہوں نے IOT نگرانی کا نظام استعمال کیا۔ زچگی کی صحت کے خطرے کا تجزیہ کریں۔. IOT نظام نے بنگلہ دیش کے دیہی علاقوں سے مختلف ہسپتالوں، کمیونٹی کلینکوں اور زچگی کی صحت کی دیکھ بھال سے ڈیٹا اکٹھا کیا۔

جمع کردہ ڈیٹا کو پھر کوما سے الگ کردہ ویلیو (csv) فائل میں ترتیب دیا گیا اور اس پر اپ لوڈ کیا گیا۔ UCI کا مشین لرننگ ذخیرہ.

یہ وہ ڈیٹا ہے جسے ہم مشق کرنے کے لیے استعمال کریں گے اور یہ سمجھنے کی کوشش کریں گے کہ آیا حاملہ عورت کو اے کم, درمیانہ or اعلی موت کا خطرہ.

نوٹ: آپ ڈیٹاسیٹ ڈاؤن لوڈ کر سکتے ہیں۔ یہاں.

درجہ بندی کے لیے بے ترتیب جنگل کا استعمال

چونکہ ہم یہ جاننا چاہتے ہیں کہ آیا عورت میں ایک ہے۔ کم, درمیانہ or اعلی اموات کا خطرہ، اس کا مطلب ہے کہ ہم تین کلاسوں کے ساتھ درجہ بندی کریں گے۔ جب کسی مسئلے کی دو سے زیادہ کلاسیں ہوں تو اسے کہا جاتا ہے۔ ملٹی کلاس مسئلہ، a کے برخلاف بائنری مسئلہ (جہاں آپ دو کلاسوں کے درمیان انتخاب کرتے ہیں، عام طور پر 0 اور 1).

اس پہلی مثال میں، ہم رینڈم فاریسٹ کلاسیفائر اور Python's Scit-Learn کے ساتھ ملٹی کلاس درجہ بندی کے ماڈل کو نافذ کریں گے۔

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

لائبریریاں درآمد کرنا

ہم ڈیٹا کو پڑھنے کے لیے پانڈا، اسے دیکھنے کے لیے Seaborn اور Matplotlib، اور NumPy کو بہترین افادیت کے طریقوں کے لیے استعمال کریں گے:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
ڈیٹاسیٹ درآمد کرنا

درج ذیل کوڈ ڈیٹاسیٹ کو درآمد کرتا ہے اور اسے ازگر میں لوڈ کرتا ہے۔ DataFrame:

dataset = pd.read_csv("../../datasets/random-forest/maternal_health_risk.csv")

ڈیٹا کی پہلی پانچ سطروں کو دیکھنے کے لیے، ہم عمل کرتے ہیں۔ head() کمانڈ:

dataset.head()

یہ نتائج:

    Age SystolicBP  DiastolicBP BS      BodyTemp    HeartRate   RiskLevel
0   25  130         80          15.0    98.0        86          high risk
1   35  140         90          13.0    98.0        70          high risk
2   29  90          70          8.0     100.0       80          high risk
3   30  140         85          7.0     98.0        70          high risk
4   35  120         60          6.1     98.0        76          low risk

یہاں ہم تحقیق کے دوران جمع کیے گئے تمام اوصاف دیکھ سکتے ہیں۔

  • عمر: سالوں میں عمر۔
  • SystolicBP: mmHg میں بلڈ پریشر کی اوپری قدر، حمل کے دوران ایک اہم وصف۔
  • DiastolicBP: mmHg میں بلڈ پریشر کی کم قیمت، حمل کے دوران ایک اور اہم وصف۔
  • BS: داڑھ کے ارتکاز کے لحاظ سے خون میں گلوکوز کی سطح، mmol/L۔
  • دل کی دھڑکن: آرام کرنے والی دل کی دھڑکن فی منٹ میں۔
  • خطرے کی سطح: حمل کے دوران خطرے کی سطح۔
  • جسمانی درجہ حرارت: جسم کا درجہ حرارت۔

اب جب کہ ہم اس کے بارے میں مزید سمجھتے ہیں کہ کیا ماپا جا رہا ہے، ہم ڈیٹا کی اقسام کو دیکھ سکتے ہیں۔ info():

dataset.info()

اس کے نتائج:


RangeIndex: 1014 entries, 0 to 1013
Data columns (total 7 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   Age          1014 non-null   int64  
 1   SystolicBP   1014 non-null   int64  
 2   DiastolicBP  1014 non-null   int64  
 3   BS           1014 non-null   float64
 4   BodyTemp     1014 non-null   float64
 5   HeartRate    1014 non-null   int64  
 6   RiskLevel    1014 non-null   object 
dtypes: float64(2), int64(4), object(1)
memory usage: 55.6+ KB

کو دیکھنے سے RangeIndex لائن، ہم دیکھ سکتے ہیں کہ 1014 ریکارڈز اور کالم موجود ہیں۔ Non-Null Count مطلع کرتا ہے کہ ڈیٹا میں کوئی قدر غائب نہیں ہے۔ اس کا مطلب ہے، ہمیں ڈیٹا غائب ہونے کا کوئی علاج کرنے کی ضرورت نہیں ہوگی!

میں Dtype کالم، ہم ہر متغیر کی قسم دیکھ سکتے ہیں۔ فی الحال، float64 کالم جیسے BS اور BodyTemp عددی قدریں ہیں جو کسی بھی حد میں مختلف ہو سکتی ہیں، جیسے کہ 15.0، 15.51، 15.76، 17.28، انہیں بناتی ہیں عددی طور پر مسلسل (آپ ہمیشہ فلوٹنگ پوائنٹ نمبر، اشتہار لامحدود میں 0 شامل کر سکتے ہیں)۔ دوسری طرف، متغیرات جیسے Age, SystolicBP, DiastolicBP، اور HeartRate قسم کے ہیں int64، اس کا مطلب یہ ہے کہ اعداد صرف یونٹ کے حساب سے تبدیل ہوتے ہیں، جیسے کہ 11، 12، 13، 14 - ہمارے دل کی شرح 77.78 نہیں ہوگی، یہ یا تو 77 یا 78 ہے - وہ ہیں عددی طور پر مجرد اقدار اور ہمارے پاس بھی ہے۔ RiskLevel ایک object ٹائپ کریں، یہ عام طور پر اس بات کی نشاندہی کرتا ہے کہ متغیر ایک متن ہے، اور ہمیں شاید اسے ایک نمبر میں تبدیل کرنے کی ضرورت ہوگی۔ چونکہ خطرے کی سطح کم سے بلند ہوتی ہے، اس لیے زمرہ جات میں ایک مضمر ترتیب ہے، اس سے ظاہر ہوتا ہے کہ یہ ایک واضح طور پر آرڈینل متغیر.

نوٹ: یہ ضروری ہے کہ ہر ڈیٹا کی قسم کو دیکھیں، اور دیکھیں کہ آیا یہ اس کے سیاق و سباق کے مطابق معنی رکھتا ہے۔ مثال کے طور پر، دل کی شرح کی اکائی کا نصف ہونا کوئی معنی نہیں رکھتا، لہذا اس کا مطلب ہے کہ انٹرجر کی قسم ایک مجرد قدر کے لیے کافی ہے۔ جب ایسا نہیں ہوتا ہے، تو آپ پانڈوں کے ساتھ ڈیٹا کی قسم کو تبدیل کر سکتے ہیں۔ astype() جائیداد - df['column_name'].astype('type').

ڈیٹا کی اقسام کو دیکھنے کے بعد، ہم استعمال کر سکتے ہیں۔ describe() کچھ وضاحتی اعدادوشمار پر عروج حاصل کرنا، جیسے کہ ہر کالم کی اوسط قدریں، معیاری انحراف، مقدار، کم از کم اور زیادہ سے زیادہ ڈیٹا کی قدریں:

dataset.describe().T 

مندرجہ بالا کوڈ دکھاتا ہے:

            count   mean        std         min     25%     50%     75%     max
Age         1014.0  29.871795   13.474386   10.0    19.0    26.0    39.0    70.0
SystolicBP  1014.0  113.198225  18.403913   70.0    100.0   120.0   120.0   160.0
DiastolicBP 1014.0  76.460552   13.885796   49.0    65.0    80.0    90.0    100.0
BS          1014.0  8.725986    3.293532    6.0     6.9     7.5     8.0     19.0
BodyTemp    1014.0  98.665089   1.371384    98.0    98.0    98.0    98.0    103.0
HeartRate   1014.0  74.301775   8.088702    7.0     70.0    76.0    80.0    90.0
RiskLevel   1014.0  0.867850    0.807353    0.0     0.0     1.0     2.0     2.0

نوٹ کریں کہ زیادہ تر کالموں کے لیے، the مطلب اقدار سے بہت دور ہیں۔ معیاری انحراف (std) - اس سے ظاہر ہوتا ہے کہ ضروری نہیں کہ اعداد و شمار اچھے برتاؤ والی شماریاتی تقسیم کی پیروی کرے۔ اگر ایسا ہوتا، تو خطرے کی پیشین گوئی کرتے وقت اس سے ماڈل کی مدد ہوتی۔ یہاں کیا کیا جا سکتا ہے کہ ڈیٹا کو پہلے سے پروسیس کیا جائے تاکہ اسے مزید نمائندہ بنایا جا سکے گویا یہ پوری دنیا کی آبادی کا ڈیٹا ہے، یا اس سے زیادہ معمول بن گیا. لیکن، رینڈم فارسٹ ماڈلز کے لیے استعمال کرتے وقت ایک فائدہ درجہ بندی، یہ ہے کہ موروثی درخت کا ڈھانچہ اس ڈیٹا کے ساتھ اچھی طرح نمٹ سکتا ہے جسے معمول پر نہیں لایا گیا ہے، ایک بار جب یہ اسے ہر متغیر کے لیے ہر درخت کی سطح میں قدر سے تقسیم کرتا ہے۔

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

اس صورت میں، ڈیٹا پری پروسیسنگ میں جو قدم ہم اٹھا سکتے ہیں وہ ہے دوٹوک کو تبدیل کرنا RiskLevel ایک عددی میں کالم۔

ڈیٹا کا تصور کرنا

تبدیل کرنے سے پہلے RiskLevel، آئیے ایک Scatterplot کے ساتھ فیچرز کے ہر جوڑے کے لیے پوائنٹس کے مجموعے کو دیکھ کر اور ہسٹوگرام کریو کو دیکھ کر پوائنٹس کو کیسے تقسیم کیا جاتا ہے، کو دیکھ کر ڈیٹا کو تیزی سے تصور کریں۔ ایسا کرنے کے لیے، ہم سیبورن کا استعمال کریں گے۔ pairplot() جو دونوں پلاٹوں کو یکجا کرتا ہے۔ یہ ہر فیچر کے امتزاج کے لیے دونوں پلاٹ تیار کرتا ہے اور ان کے خطرے کی سطح کے مطابق کوڈ کردہ پوائنٹس کا رنگ دکھاتا ہے۔ hue جائیداد:

g = sns.pairplot(dataset, hue='RiskLevel')
g.fig.suptitle("Scatterplot and histogram of pairs of variables color coded by risk level", 
               fontsize = 14, 
               y=1.05); 

مندرجہ بالا کوڈ تیار کرتا ہے:

Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی

پلاٹ کو دیکھتے وقت، مثالی صورت حال یہ ہوگی کہ منحنی خطوط اور منحنی خطوط کے درمیان واضح علیحدگی ہو۔ جیسا کہ ہم دیکھ سکتے ہیں، تین قسم کے رسک کلاسز زیادہ تر مخلوط ہوتے ہیں، چونکہ پوائنٹس کے درمیان خالی جگہوں کو محدود کرتے وقت درخت اندرونی طور پر لکیریں کھینچتے ہیں، اس لیے ہم یہ قیاس کر سکتے ہیں کہ جنگل میں زیادہ درخت زیادہ جگہوں کو محدود کرنے اور پوائنٹس کی بہتر درجہ بندی کرنے کے قابل ہو سکتے ہیں۔

بنیادی تحقیقی ڈیٹا کے تجزیے کے ساتھ، ہم پری پروسیس کر سکتے ہیں۔ RiskLevel کالم.

درجہ بندی کے لیے ڈیٹا پری پروسیسنگ

اس بات کا یقین کرنے کے لئے کہ صرف تین کلاسیں ہیں۔ RiskLevel ہمارے ڈیٹا میں، اور یہ کہ کوئی دوسری اقدار غلطی سے شامل نہیں کی گئی ہیں، ہم استعمال کر سکتے ہیں۔ unique() کالم کی منفرد اقدار کو ظاہر کرنے کے لیے:

dataset['RiskLevel'].unique()

یہ نتائج:

array(['high risk', 'low risk', 'mid risk'], dtype=object)

کلاسز کی جانچ پڑتال کی جاتی ہے، اب اگلا مرحلہ ہر قدر کو ایک نمبر میں تبدیل کرنا ہے۔ چونکہ درجہ بندیوں کے درمیان ایک ترتیب ہے، اس لیے ہم 0، 1 اور 2 کی قدریں استعمال کر سکتے ہیں۔ کم, درمیانہ اور اعلی خطرات Python کی پیروی کرتے ہوئے کالم کی اقدار کو تبدیل کرنے کے بہت سے طریقے ہیں۔ سادہ ہے بہتر ہے کہ پیچیدہ نعرہ، ہم استعمال کریں گے .replace() طریقہ، اور صرف ان کو ان کی عددی نمائندگی کے ساتھ تبدیل کریں:

dataset['RiskLevel'] = dataset['RiskLevel'].replace('low risk', 0).replace('mid risk', 1).replace('high risk', 2)

اقدار کو تبدیل کرنے کے بعد، ہم ڈیٹا کو اس میں تقسیم کر سکتے ہیں جو ماڈل کی تربیت کے لیے استعمال کی جائے گی۔ خصوصیات or X، اور ہم کیا پیشن گوئی کرنا چاہتے ہیں، لیبل or y:

y = dataset['RiskLevel']
X = dataset.drop(['RiskLevel'], axis=1)

ایک بار X اور y سیٹ تیار ہیں، ہم Scikit-Learn's استعمال کر سکتے ہیں۔ train_test_split() انہیں ٹرین اور ٹیسٹ سیٹ میں مزید تقسیم کرنے کا طریقہ:

from sklearn.model_selection import train_test_split

SEED = 42
X_train, X_test, y_train, y_test = train_test_split(X, y, 
                                                    test_size=0.2, 
                                                    random_state=SEED)

مشورہ: اگر آپ نتیجہ کو دوبارہ پیدا کرنے کے قابل بنانا چاہتے ہیں تو بے ترتیب حالت کا بیج استعمال کرنا یاد رکھیں۔ ہم نے بے ترتیب حالت کا بیج استعمال کیا ہے تاکہ آپ وہی نتائج دوبارہ پیش کر سکیں جو گائیڈ سے ہے۔

یہاں، ہم 20% ڈیٹا ٹیسٹنگ کے لیے اور 80% ٹریننگ کے لیے استعمال کر رہے ہیں۔

رینڈم فارسٹ کلاسیفائر کی تربیت

بہترین طرز عمل، صنعت کے لیے منظور شدہ معیارات، اور چیٹ شیٹ کے ساتھ Git سیکھنے کے لیے ہمارے ہینڈ آن، عملی گائیڈ کو دیکھیں۔ گوگلنگ گٹ کمانڈز کو روکیں اور اصل میں سیکھ یہ!

Scikit-Learn کے تحت نافذ کردہ ensembles sklearn.ensemble ماڈیول درجہ بندی کے لیے استعمال ہونے والے فیصلے کے درختوں کا ایک جوڑا، جس میں اکثریت کا ووٹ لیا جاتا ہے اس کو بطور لاگو کیا جاتا ہے۔ RandomForestClassifier.

ٹرین اور ٹیسٹ سیٹ کے ساتھ، ہم درآمد کر سکتے ہیں RandomForestClassifier کلاس بنائیں اور ماڈل بنائیں۔ شروع کرنے کے لیے، آئیے ترتیب دے کر تین درختوں کے ساتھ ایک جنگل بنائیں n_estimators پیرامیٹر 3 کے طور پر، اور ہر درخت کے ساتھ تین سطحیں، ترتیب کے ذریعے max_depth2 پر:

from sklearn.ensemble import RandomForestClassifier

rfc = RandomForestClassifier(n_estimators=3, 
                             max_depth=2,
                             random_state=SEED)

نوٹ: کے لئے پہلے سے طے شدہ قیمت n_estimators is 100. اس سے جوڑ کی پیشین گوئی کی طاقت اور عمومیت کو فروغ ملتا ہے، لیکن ہم اسے دیکھنے اور اس کا معائنہ کرنا آسان بنانے کے لیے ایک چھوٹا بنا رہے ہیں۔ صرف 3 درختوں کے ساتھ - ہم ان کا تصور اور معائنہ کر سکتے ہیں۔ دستی طور پر انفرادی درختوں اور ان کے باہمی انحصار دونوں کے بارے میں ہماری بصیرت کو مزید فروغ دینے کے لیے۔ اسی پر لاگو ہوتا ہے۔ max_depthہے، جو None، یعنی درخت ضرورت کے مطابق ڈیٹا کو فٹ کرنے کے لیے گہرے اور گہرے ہو سکتے ہیں۔

ڈیٹا کے ارد گرد ماڈل کو فٹ کرنے کے لیے - ہم کال کرتے ہیں۔ fit() طریقہ، تربیت کی خصوصیات اور لیبلز میں گزرنا:


rfc.fit(X_train, y_train)

y_pred = rfc.predict(X_test)

اب ہم پیشن گوئی شدہ لیبلز کا حقیقی لیبلز سے موازنہ کر سکتے ہیں تاکہ اندازہ لگایا جا سکے کہ ماڈل نے کتنا اچھا کام کیا! ماڈل کا جائزہ لینے سے پہلے، آئیے اس کے جوڑ پر ایک نظر ڈالیں۔

ماڈل کو تھوڑا گہرائی میں دیکھنے کے لیے، ہم ہر ایک درخت کا تصور کر سکتے ہیں اور یہ کہ وہ ڈیٹا کو کیسے تقسیم کر رہے ہیں۔ یہ استعمال کرکے کیا جاسکتا ہے۔ tree Scikit-Learn میں بنایا گیا ماڈیول، اور پھر جوڑ میں موجود ہر ایک تخمینہ کے ذریعے لوپ کرنا:


from sklearn import tree

features = X.columns.values 
classes = ['0', '1', '2'] 



for estimator in rfc.estimators_:
    print(estimator)
    plt.figure(figsize=(12,6))
    tree.plot_tree(estimator,
                   feature_names=features,
                   class_names=classes,
                   fontsize=8, 
                   filled=True, 
                   rounded=True)
    plt.show()

مندرجہ بالا کوڈ درخت کے پلاٹ دکھاتا ہے:

Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی
Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی
Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی

غور کریں کہ تین درخت کیسے مختلف ہیں۔ پہلے سے شروع ہوتا ہے۔ BS خصوصیت، دوسری کے ساتھ DiastolicBP، اور تیسرے کے ساتھ BS دوبارہ اگرچہ تیسرا نمونے کی ایک مختلف تعداد کو دیکھتا ہے۔ دائیں شاخ پر، پہلے دو درخت بھی استعمال کرنے کا فیصلہ کرتے ہیں۔ Age پتی کی سطح پر، جبکہ تیسرا درخت اس کے ساتھ ختم ہوتا ہے۔ BS خصوصیت صرف تین تخمینوں کے ساتھ، یہ واضح ہے کہ کس طرح اسکیلنگ اپ علم کی بھرپور، متنوع نمائندگی فراہم کرتی ہے جسے کامیابی کے ساتھ ایک انتہائی درست ماڈل میں جوڑا جا سکتا ہے۔

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

زیادہ درخت رکھنے کے بارے میں پہلے ایک مفروضہ بنایا گیا تھا، اور یہ ماڈل کے نتائج کو کیسے بہتر بنا سکتا ہے۔ آئیے نتائج پر ایک نظر ڈالیں، ایک نیا ماڈل بنائیں اور دیکھیں کہ آیا ہپوتھیسس برقرار ہے!

RandomForestClassifier کا اندازہ لگانا

Scikit-Learn فراہم کرکے بیس لائنز بنانا آسان بناتا ہے۔ DummyClassifier، جو پیشین گوئیاں کرتا ہے۔ ان پٹ خصوصیات کا استعمال کیے بغیر (مکمل طور پر بے ترتیب آؤٹ پٹ)۔ اگر آپ کا ماڈل اس سے بہتر ہے۔ DummyClassifier, کچھ سیکھنا ہو رہا ہے! سیکھنے کو زیادہ سے زیادہ کرنے کے لیے – آپ a کا استعمال کرکے خود بخود مختلف ہائپر پیرامیٹرس کو جانچ سکتے ہیں۔ RandomizedSearchCV or GridSearchCV. بیس لائن رکھنے کے علاوہ، آپ کئی میٹرکس کے لینز سے اپنے ماڈل کی کارکردگی کا جائزہ لے سکتے ہیں۔

کچھ روایتی درجہ بندی میٹرکس جو الگورتھم کا جائزہ لینے کے لیے استعمال کی جا سکتی ہیں وہ ہیں درستگی، یاد کرنا، f1 سکور، درستگی، اور کنفیوژن میٹرکس۔ یہاں ان میں سے ہر ایک پر ایک مختصر وضاحت ہے:

  1. صحت سے متعلق: جب ہمارا مقصد یہ سمجھنا ہے کہ ہمارے درجہ بندی کرنے والے نے پیشین گوئی کی کن درست اقدار کو درست سمجھا ہے۔ درستگی ان حقیقی مثبت اقدار کو ان نمونوں سے تقسیم کرے گی جن کی پیشین گوئی مثبت کے طور پر کی گئی تھی۔

$$
precision = frac{text{true positives}}{text{true positives} + text{false positives}}
$$

  1. یاد رکھیں: عام طور پر درستگی کے ساتھ حساب کیا جاتا ہے تاکہ یہ سمجھنے کے لیے کہ ہمارے درجہ بندی کرنے والے نے کتنے حقیقی مثبتات کی نشاندہی کی ہے۔ واپسی کا حساب حقیقی مثبت کو کسی بھی چیز سے تقسیم کرکے لگایا جاتا ہے جس کی مثبت پیشین گوئی کی جانی چاہیے تھی۔

$$
recall = frac{text{true positives}}{text{true positives} + text{false negatives}}
$$

  1. F1 سکور: متوازن غذا ہے۔ ہارمونک مطلب درستگی اور یاد کی. سب سے کم قیمت 0 ہے اور سب سے زیادہ 1 ہے۔ کب f1-score 1 کے برابر ہے، اس کا مطلب ہے کہ تمام کلاسوں کی صحیح پیش گوئی کی گئی تھی - یہ حقیقی اعداد و شمار کے ساتھ حاصل کرنے کے لیے بہت مشکل اسکور ہے (استثنیات تقریباً ہمیشہ موجود ہیں)۔

$$
متن{f1-score} = 2* frac{text{precision} * text{recall}}{text{precision} + text{recall}}
$$

  1. کنفیوژن میٹرکس: جب ہمیں یہ جاننے کی ضرورت ہوتی ہے کہ ہمیں کتنے نمونے صحیح یا غلط ملے ہر کلاس. ان اقدار کو کہا جاتا ہے جن کی صحیح اور درست پیش گوئی کی گئی تھی۔ حقیقی مثبت, جن کی پیشین گوئی مثبت کے طور پر کی گئی تھی لیکن وہ مثبت نہیں تھے کہلاتے ہیں۔ غلط مثبت. کا ایک ہی نام حقیقی منفی اور جھوٹے منفی منفی اقدار کے لیے استعمال کیا جاتا ہے؛

  2. درستگی: بیان کرتا ہے کہ ہمارے درجہ بندی کرنے والے نے کتنی پیشین گوئیاں درست کیں۔ سب سے کم درستگی کی قدر 0 ہے اور سب سے زیادہ 1۔ اس قدر کو عام طور پر 100 سے ضرب دیا جاتا ہے تاکہ فیصد حاصل کیا جا سکے۔

$$
درستگی = frac{متن{صحیح پیشین گوئیوں کی تعداد}}متن{پیش گوئیوں کی کل تعداد}}
$$

نوٹ: کسی بھی حقیقی ڈیٹا پر 100% درستگی حاصل کرنا عملی طور پر ناممکن ہے جس پر آپ مشین لرننگ کا اطلاق کرنا چاہتے ہیں۔ اگر آپ کو 100% درستگی کا درجہ بندی، یا یہاں تک کہ 100% کے قریب نتیجہ نظر آتا ہے تو - شک میں رہیں، اور تشخیص کریں۔ ان مسائل کی ایک عام وجہ ڈیٹا کا لیک ہونا ہے (براہ راست یا بالواسطہ طور پر تربیتی ٹیسٹ کے کچھ حصے کو ٹیسٹ سیٹ میں لیک کرنا)۔ "اچھی درستگی" کیا ہے اس پر کوئی اتفاق رائے نہیں ہے، بنیادی طور پر اس لیے کہ یہ آپ کے ڈیٹا پر منحصر ہے – بعض اوقات، 70% درستگی زیادہ ہو جائے گی! کبھی کبھی، یہ واقعی کم درستگی ہوگی۔ عمومی طور پربہت سے ماڈلز کے لیے 70% سے زیادہ کافی ہے، لیکن اس کا تعین کرنا ڈومین محقق پر ہے۔

آپ ضروری لائبریریوں کو درآمد کرنے اور نتائج کو دیکھنے کے لیے درج ذیل اسکرپٹ پر عمل کر سکتے ہیں۔

from sklearn.metrics import classification_report, confusion_matrix

cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d').set_title('Maternal risks confusion matrix (0 = low risk, 1 = medium risk, 2 = high risk)')

print(classification_report(y_test,y_pred))

آؤٹ پٹ کچھ اس طرح نظر آئے گا:

                precision    recall  f1-score   support

           0       0.53      0.89      0.66        80
           1       0.57      0.17      0.26        76
           2       0.74      0.72      0.73        47

    accuracy                           0.58       203
   macro avg       0.61      0.59      0.55       203
weighted avg       0.59      0.58      0.53       203

Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی

درجہ بندی کی رپورٹ میں، مشاہدہ کریں کہ یاد کرنا زیادہ ہے، کلاس 0.89 کے لیے 0، کلاس 2، 0.74، 0.72 کے لیے درستگی اور یاد دونوں زیادہ ہیں - اور کلاس 1 کے لیے، وہ کم ہیں، خاص طور پر 0.17 کی یاد اور 0.57 کی درستگی۔ . تینوں طبقوں کے لیے انفرادی طور پر یاد کرنے اور درستگی کے درمیان تعلق کو میں پکڑا گیا ہے۔ F1 سکور، جو یاد کرنے اور درستگی کے درمیان ہارمونک مطلب ہے – ماڈل کر رہا ہے۔ ٹھیک ہے کلاس 0 کے لیے، کلاس 1 کے لیے کافی برا اور کلاس 2 کے لیے مہذب۔

ماڈل کو شناخت کرنے میں بہت مشکل ہو رہی ہے۔ درمیانے درجے کے خطرے کے معاملات.

ہمارے بے ترتیب جنگل کی درجہ بندی کرنے والے نے صرف 3 درختوں کے ساتھ جو درستگی حاصل کی ہے۔ 0.58 (58%) - اس کا مطلب ہے کہ یہ نصف سے کچھ زیادہ صحیح نتائج حاصل کر رہا ہے۔ یہ ایک کم درستگی ہے، اور شاید مزید درختوں کو شامل کرکے بہتر کیا جا سکتا ہے۔

کنفیوژن میٹرکس کو دیکھ کر، ہم دیکھ سکتے ہیں کہ زیادہ تر غلطیاں اس وقت ہوتی ہیں جب درمیانے خطرے کے 52 ریکارڈز کو کم خطرے کے طور پر درجہ بندی کیا جاتا ہے، جو کلاس 1 کی کم یاد کو مزید بصیرت فراہم کرتا ہے۔ خطرے کے مریضوں.

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

اسے دیکھنے کے لیے، ہم تک رسائی حاصل کر سکتے ہیں۔ feature_importances_ درجہ بندی کرنے والے کی خاصیت۔ یہ ہمیں فیصد کی فہرست دے گا، لہذا ہم اس تک بھی رسائی حاصل کر سکتے ہیں۔ feature_names_in_ ہر خصوصیت کا نام حاصل کرنے کے لیے پراپرٹی، ان کو ڈیٹا فریم میں ترتیب دیں، انہیں سب سے اونچی سے نیچے تک ترتیب دیں، اور نتیجہ پلاٹ کریں:


features_df = pd.DataFrame({'features': rfc.feature_names_in_, 'importances': rfc.feature_importances_ })


features_df_sorted = features_df.sort_values(by='importances', ascending=False)


g = sns.barplot(data=features_df_sorted, x='importances', y ='features', palette="rocket")
sns.despine(bottom = True, left = True)
g.set_title('Feature importances')
g.set(xlabel=None)
g.set(ylabel=None)
g.set(xticks=[])
for value in g.containers:
    g.bar_label(value, padding=2)

Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی

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

آخرکار یہ وقت آگیا ہے کہ مزید درختوں کے ساتھ ایک نیا ماڈل تیار کیا جائے تاکہ یہ دیکھا جا سکے کہ یہ نتائج کو کیسے متاثر کرتا ہے۔ آئیے تخلیق کرتے ہیں۔ rfc_ 900 درختوں، 8 سطحوں اور ایک ہی بیج کے ساتھ جنگل۔ کیا نتائج بہتر ہوں گے؟

rfc_ = RandomForestClassifier(n_estimators=900, 
                             max_depth=7,
                             random_state=SEED)
rfc_.fit(X_train, y_train)
y_pred = rfc_.predict(X_test)

میٹرکس کا حساب لگانا اور ڈسپلے کرنا:

cm_ = confusion_matrix(y_test, y_pred)
sns.heatmap(cm_, annot=True, fmt='d').set_title('Maternal risks confusion matrix (0 = low risk, 1 = medium risk, 2 = high risk) for 900 trees with 8 levels')

print(classification_report(y_test,y_pred))

یہ نتائج:

                precision    recall  f1-score   support

           0       0.68      0.86      0.76        80
           1       0.75      0.58      0.65        76
           2       0.90      0.81      0.85        47

    accuracy                           0.74       203
   macro avg       0.78      0.75      0.75       203
weighted avg       0.76      0.74      0.74       203

Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی

اس سے پتہ چلتا ہے کہ کس طرح مزید درختوں، اور مزید خصوصی درختوں (اعلیٰ سطحوں) کو شامل کرنے سے ہمارے میٹرکس میں بہتری آئی ہے۔ ہمارے پاس ابھی بھی کلاس 1 کے لیے کم یاد ہے، لیکن درستگی اب 74% ہے۔ ہائی رسک کیسز کی کلاسیفنگ کرتے وقت F1 اسکور 0.85 ہوتا ہے، جس کا مطلب ہے کہ پچھلے ماڈل میں 0.73 کے مقابلے اب ہائی رسک کیسز کی آسانی سے شناخت ہو جاتی ہے!

روزمرہ کے منصوبے میں، زیادہ خطرے کے کیسز کی نشاندہی کرنا زیادہ اہم ہو سکتا ہے، مثال کے طور پر درستگی سے ملتی جلتی میٹرک کے ساتھ، جسے بھی کہا جاتا ہے۔ سنویدنشیلتا اعداد و شمار میں ماڈل کے کچھ پیرامیٹرز کو ٹویک کرنے کی کوشش کریں اور نتائج کا مشاہدہ کریں۔

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

رجعت کے لیے بے ترتیب جنگلات کا استعمال

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

چونکہ رجعت کے لیے کیا جاتا ہے۔ عددی اقدار - آئیے ڈیٹاسیٹ سے ایک عددی قدر چنتے ہیں۔ ہم نے دیکھا ہے کہ خون کی شکر درجہ بندی میں اہم تھی، اس لیے اس کی دیگر خصوصیات کی بنیاد پر پیش گوئی کی جانی چاہیے (چونکہ اگر یہ کسی خصوصیت کے ساتھ تعلق رکھتا ہے، تو وہ خصوصیت بھی اس کے ساتھ تعلق رکھتی ہے)۔

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

لائبریریاں اور ڈیٹا درآمد کرنا
import pandas as pd
import numpy as np
import maplotlib.pyplot as plt
import seaborn as sns

dataset = pd.read_csv("../../datasets/random-forest/maternal_health_risk.csv")
رجعت کے لیے ڈیٹا پری پروسیسنگ

یہ ایک رجعت کا کام ہے، لہذا کلاسوں کی پیشین گوئی کرنے کے بجائے، ہم ڈیٹاسیٹ کے عددی کالموں میں سے کسی ایک کی پیش گوئی کر سکتے ہیں۔ اس مثال میں، BS کالم کی پیش گوئی کی جائے گی۔ اس کا مطلب ہے۔ y ڈیٹا پر مشتمل ہوگا۔ خون کی شکر کے اعداد و شمار، اور X ڈیٹا میں بلڈ شوگر کے علاوہ تمام خصوصیات شامل ہوں گی۔ الگ کرنے کے بعد X اور y ڈیٹا، ہم ٹرین اور ٹیسٹ سیٹ تقسیم کر سکتے ہیں:

from sklearn.model_selection import train_test_split

SEED = 42

y = dataset['BS']
X = dataset.drop(['BS'], axis=1) 

X_train, X_test, y_train, y_test = train_test_split(X, y, 
                                                    test_size=0.2, 
                                                    random_state=SEED)
RandomForestRegressor کو تربیت دینا

اب جب کہ ہم نے اپنے ڈیٹاسیٹ کی پیمائش کی ہے، اب وقت آگیا ہے کہ ہم اپنے الگورتھم کو اس رجعت کے مسئلے کو حل کرنے کے لیے تربیت دیں، اسے تھوڑا سا تبدیل کریں – ہم جنگل میں 20 درختوں کے ساتھ ایک ماڈل بنائیں گے اور ہر ایک میں 4 درجات ہوں گے۔ ایسا کرنے کے لیے، آپ درج ذیل کوڈ پر عمل کر سکتے ہیں:

from sklearn.ensemble import RandomForestRegressor

rfr = RandomForestRegressor(n_estimators=20, 
                            max_depth=3, 
                            random_state=SEED)

rfr.fit(X_train, y_train)
y_pred = rfr.predict(X_test)

آپ کے تمام پیرامیٹرز کی تفصیلات حاصل کر سکتے ہیں۔ RandomForestRegressor سرکاری دستاویزات میں.

چونکہ 20 درختوں کی منصوبہ بندی کرنے اور ان کو دیکھنے میں کچھ وقت اور لگن کی ضرورت ہوتی ہے، اس لیے ہم صرف پہلے والے کو پلاٹ کر سکتے ہیں تاکہ یہ دیکھیں کہ یہ درجہ بندی کے درخت سے کیسے مختلف ہے:

from sklearn import tree

features = X.columns

first_tree = rfr.estimators_[0]

plt.figure(figsize=(15,6))
tree.plot_tree(first_tree,
               feature_names=features,
               fontsize=8, 
               filled=True, 
               rounded=True);

Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی

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

مشین لرننگ کے مسئلے کو حل کرتے وقت آخری اور آخری مرحلے پر آگے بڑھنے اور الگورتھم کی کارکردگی کا جائزہ لینے کا وقت ہے!

RandomForestRegressor کا اندازہ لگانا

رجعت کے مسائل کے لیے الگورتھم کا جائزہ لینے کے لیے استعمال ہونے والے میٹرکس کا مطلب مطلق غلطی (MAE)، مطلب مربع غلطی (MSE)، اور جڑ کا مطلب مربع غلطی (RMSE) ہے۔

  1. مطلب مطلق غلطی (MAE): جب ہم پیشن گوئی شدہ اقدار کو اصل اقدار سے گھٹاتے ہیں، غلطیاں حاصل کرتے ہیں، تو ان غلطیوں کی مطلق قدروں کو جمع کریں اور ان کا اوسط حاصل کریں۔ یہ میٹرک ماڈل کی ہر پیشین گوئی کے لیے مجموعی غلطی کا تصور دیتا ہے، جتنا چھوٹا (0 کے قریب) اتنا ہی بہتر۔

$$
mae = (frac{1}{n})sum_{i=1}^{n}بائیں | اصل - پیشین گوئی درست |
$$

نوٹ: آپ کا سامنا بھی ہو سکتا ہے۔ y اور ŷ مساوات میں اشارے دی y اصل اقدار سے مراد ہے۔ ŷ پیشن گوئی شدہ اقدار تک۔

  1. اوسط مربع غلطی (MSE): یہ MAE میٹرک کی طرح ہے، لیکن یہ غلطیوں کی مطلق قدروں کو مربع کرتا ہے۔ نیز، جیسا کہ MAE کے ساتھ، جتنا چھوٹا، یا 0 کے قریب، اتنا ہی بہتر۔ MSE قدر کو مربع کیا جاتا ہے تاکہ بڑی غلطیوں کو اور بھی بڑا بنایا جا سکے۔ ایک چیز جس پر پوری توجہ دینے کی ضرورت ہے، وہ یہ کہ عام طور پر اس کی قدروں کے سائز اور اس حقیقت کی وجہ سے کہ وہ ڈیٹا کے ایک ہی پیمانے پر نہیں ہیں اس کی تشریح کرنا ایک مشکل میٹرک ہے۔

$$
mse = sum_{i=1}^{D}(اصل - پیشین گوئی)^2
$$

  1. روٹ مین اسکوائرڈ ایرر (RMSE): MSE کے ساتھ اٹھائے گئے تشریحی مسئلے کو اس کی حتمی قیمت کا مربع جڑ حاصل کر کے حل کرنے کی کوشش کرتا ہے، تاکہ ڈیٹا کی انہی اکائیوں پر واپس اسکیل کیا جا سکے۔ جب ہمیں غلطی کے ساتھ ڈیٹا کی اصل قدر ظاہر کرنے یا دکھانے کی ضرورت ہو تو اس کی تشریح کرنا آسان اور اچھا ہوتا ہے۔ یہ ظاہر کرتا ہے کہ ڈیٹا کتنا مختلف ہو سکتا ہے، لہذا، اگر ہمارے پاس 4.35 کا RMSE ہے، تو ہمارے ماڈل میں غلطی ہو سکتی ہے کیونکہ اس نے اصل قدر میں 4.35 کا اضافہ کیا ہے، یا اصل قدر تک پہنچنے کے لیے 4.35 کی ضرورت ہے۔ 0 کے قریب، اتنا ہی بہتر۔

$$
rmse = sqrt{ sum_{i=1}^{D}(اصل – پیشین گوئی)^2}
$$

ہم ان تین میٹرکس میں سے کسی کو بھی استعمال کر سکتے ہیں۔ موازنہ ماڈل (اگر ہمیں کسی کو منتخب کرنے کی ضرورت ہے)۔ ہم ایک ہی ریگریشن ماڈل کا مختلف دلیل کی قدروں یا مختلف ڈیٹا کے ساتھ موازنہ بھی کر سکتے ہیں اور پھر تشخیصی میٹرکس پر غور کر سکتے ہیں۔ یہ کے طور پر جانا جاتا ہے ہائپر پیرامیٹر ٹیوننگ - سیکھنے کے الگورتھم کو متاثر کرنے والے ہائپر پیرامیٹرس کو ٹیوننگ کرنا اور نتائج کا مشاہدہ کرنا۔

ماڈلز کے درمیان انتخاب کرتے وقت، جن میں سب سے چھوٹی خامیاں ہیں، وہ عام طور پر بہتر کارکردگی کا مظاہرہ کرتے ہیں۔ ماڈلز کی نگرانی کرتے وقت، اگر میٹرکس خراب ہو گئے، تو ماڈل کا پچھلا ورژن بہتر تھا، یا ماڈل کی کارکردگی سے بدتر کارکردگی دکھانے کے لیے ڈیٹا میں کچھ اہم تبدیلی تھی۔

آپ ان اقدار کو تلاش کرنے کے لیے درج ذیل کوڈ کو استعمال کر سکتے ہیں:

from sklearn.metrics import mean_absolute_error, mean_squared_error

print('Mean Absolute Error:', mean_absolute_error(y_test, y_pred))
print('Mean Squared Error:', mean_squared_error(y_test, y_pred))
print('Root Mean Squared Error:', np.sqrt(mean_squared_error(y_test, y_pred)))

آؤٹ پٹ ہونا چاہئے:

Mean Absolute Error: 1.127893702896059
Mean Squared Error: 3.0802988503933326
Root Mean Squared Error: 1.755078018320933

20 درختوں کے ساتھ، جڑ کا مطلب مربع غلطی 1.75 ہے جو کم ہے، لیکن اس کے باوجود - درختوں کی تعداد کو بڑھا کر اور دوسرے پیرامیٹرز کے ساتھ تجربہ کرنے سے، یہ غلطی شاید اور بھی چھوٹی ہو سکتی ہے۔

بے ترتیب جنگل کے استعمال کے فوائد

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

  1. بے ترتیب جنگل کا الگورتھم متعصب نہیں ہے، کیونکہ، یہاں متعدد درخت ہیں اور ہر درخت کو ڈیٹا کے بے ترتیب ذیلی سیٹ پر تربیت دی جاتی ہے۔ بنیادی طور پر، بے ترتیب جنگل الگورتھم "بھیڑ" کی طاقت پر انحصار کرتا ہے؛ لہذا الگورتھم کے تعصب کی مجموعی ڈگری کم ہو گئی ہے۔
  2. یہ الگورتھم بہت مستحکم ہے۔ یہاں تک کہ اگر ڈیٹا سیٹ میں ایک نیا ڈیٹا پوائنٹ متعارف کرایا جاتا ہے تو مجموعی الگورتھم زیادہ متاثر نہیں ہوتا ہے کیونکہ نیا ڈیٹا ایک درخت کو متاثر کر سکتا ہے، لیکن اس کے لیے تمام درختوں کو متاثر کرنا بہت مشکل ہے۔
  3. رینڈم فارسٹ الگورتھم اس وقت اچھی طرح کام کرتا ہے جب آپ کے پاس واضح اور عددی دونوں خصوصیات ہوں۔
  4. رینڈم فاریسٹ الگورتھم اس وقت بھی اچھی طرح کام کرتا ہے جب ڈیٹا میں قدریں کم ہوتی ہیں یا اس کی پیمائش نہیں کی جاتی ہے۔

بے ترتیب جنگل کے استعمال کے نقصانات

  1. بے ترتیب جنگلات کا بنیادی نقصان ان کی پیچیدگی میں ہے۔ انہیں بہت زیادہ کمپیوٹیشنل وسائل کی ضرورت ہوتی ہے، بڑی تعداد میں فیصلہ کن درختوں کے ایک ساتھ شامل ہونے کی وجہ سے، جب بڑے جوڑوں کو تربیت دی جاتی ہے۔ اگرچہ – جدید ہارڈ ویئر کے ساتھ، یہاں تک کہ بڑے بے ترتیب جنگل کی تربیت میں زیادہ وقت نہیں لگتا۔

مزید جانا - ہاتھ سے پکڑے گئے اینڈ ٹو اینڈ پروجیکٹ

آپ کی جستجو کرنے والی فطرت آپ کو مزید آگے بڑھنا چاہتی ہے؟ ہم اپنے کو چیک کرنے کی تجویز کرتے ہیں۔ گائیڈڈ پروجیکٹ: "ہینڈ آن ہاؤس پرائس کی پیشن گوئی - Python میں مشین لرننگ".

Python اور Scikit-Learn PlatoBlockchain ڈیٹا انٹیلی جنس کے ساتھ رینڈم فارسٹ الگورتھم کے لیے حتمی گائیڈ۔ عمودی تلاش۔ عی

اس گائیڈڈ پروجیکٹ میں - آپ سیکھیں گے کہ طاقتور روایتی مشین لرننگ ماڈلز کے ساتھ ساتھ ڈیپ لرننگ ماڈلز کیسے بنائے جائیں، Ensemble لرننگ کا استعمال کریں اور میٹا لرنرز کو Scikit-Learn اور Keras ماڈلز کے ایک بیگ سے مکان کی قیمتوں کا اندازہ لگانے کے لیے تربیت دیں۔

Keras کا استعمال کرتے ہوئے، Tensorflow کے اوپر بنایا گیا گہری سیکھنے والا API، ہم فن تعمیر کے ساتھ تجربہ کریں گے، اسٹیک شدہ ماڈلز کا ایک جوڑا بنائیں گے اور ایک میٹا لرنر نیورل نیٹ ورک (سطح 1 ماڈل) گھر کی قیمت کا تعین کرنے کے لیے۔

گہرائی سے سیکھنا حیرت انگیز ہے - لیکن اس کا سہارا لینے سے پہلے، یہ مشورہ دیا جاتا ہے کہ اس مسئلے کو آسان تراکیب کے ساتھ حل کرنے کی بھی کوشش کریں، جیسے کہ اتلی سیکھنے الگورتھم ہماری بنیادی کارکردگی a پر مبنی ہوگی۔ رینڈم فارسٹ ریگریشن الگورتھم مزید برآں - ہم Scikit-Learn کے ذریعے تکنیکوں کے ذریعے ماڈلز کے جوڑ بنانے کی تلاش کریں گے جیسے بیگنگ اور ووٹنگ.

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

ٹائم اسٹیمپ:

سے زیادہ Stackabuse