ہگنگ فیس ٹرین اور اسپلٹ ڈیٹاسیٹ

Gng Fys Ryn Awr Aspl Y Asy



ہگنگ فیس لائبریری میں ٹرین_ٹیسٹ_اسپلٹ نام کا کوئی خاص فنکشن نہیں ہے۔ تاہم، جب مشین لرننگ کے کاموں میں ٹریننگ اور ٹیسٹنگ کے لیے ڈیٹا کو تقسیم کرنے کی بات آتی ہے، تو ٹرین_ٹیسٹ_اسپلٹ فنکشن عام طور پر دیگر مشہور لائبریریوں میں استعمال ہوتا ہے جیسے اسکِٹ لرن۔ یہاں، ہم ان پیرامیٹرز کی وضاحت کریں گے جو عام طور پر scikit-learn سے train_test_split فنکشن میں استعمال ہوتے ہیں۔

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







ہگنگ فیس میں ٹرین_ٹیسٹ_اسپلٹ طریقہ کا ایک جائزہ یہ ہے:



  1. test_size (numpy.random.Generator، اختیاری) : ٹیسٹ اسپلٹ کے سائز کا تعین اس اختیار سے ہوتا ہے۔ قسم فلوٹ یا انٹیجر ہو سکتی ہے۔
  • اگر اسے فلوٹ کے طور پر دیا گیا ہے، تو اسے ٹیسٹ اسپلٹ میں شامل کرنے کے لیے ڈیٹاسیٹ کے فیصد کو ظاہر کرنا چاہیے اور 0.0 اور 1.0 کے درمیان ہونا چاہیے۔
  • ٹیسٹ کے نمونوں کی صحیح تعداد کو قدر سے ظاہر کیا جاتا ہے اگر اسے ایک عدد کے طور پر فراہم کیا جاتا ہے۔
  • اگر اسے کوئی نہیں پر سیٹ کیا جاتا ہے، تو ٹرین کے سائز کی تکمیل کو قدر کے طور پر استعمال کیا جاتا ہے۔
  • اگر ٹرین کا سائز بھی کوئی نہیں ہے تو اسے 0.25 (ڈیٹا سیٹ کا 25%) پر سیٹ کیا جائے گا۔
  • train_size (numpy.random.Generator، اختیاری): ٹرین کی تقسیم کا سائز اس پیرامیٹر سے طے ہوتا ہے۔ یہ test_size جیسی ہدایات کی پیروی کرتا ہے۔
    • اگر اسے فلوٹ کے طور پر دیا جاتا ہے، تو اسے ٹرین کی تقسیم میں شامل کرنے کے لیے ڈیٹاسیٹ کا فیصد ظاہر کرنا چاہیے اور 0.0 اور 1.0 کے درمیان ہونا چاہیے۔
    • ٹرین کے نمونوں کی صحیح تعداد کو قدر سے ظاہر کیا جاتا ہے اگر اسے ایک عدد کے طور پر فراہم کیا جاتا ہے۔
    • اگر اسے کوئی نہیں پر سیٹ کیا جاتا ہے تو، قدر خود بخود ٹیسٹ سائز کے تکمیل میں تبدیل ہو جاتی ہے۔
  • شفل (بول، اختیاری، ڈیفالٹس سے سچ)
    • یہ پیرامیٹر اس بات کا تعین کرتا ہے کہ تقسیم کرنے سے پہلے ڈیٹا کو شفل کرنا ہے یا نہیں۔
    • اگر اسے درست پر سیٹ کیا جاتا ہے، تو تقسیم سے پہلے ڈیٹا کو تصادفی طور پر بدل دیا جائے گا۔
    • اگر اسے False پر سیٹ کیا جاتا ہے، تو ڈیٹا شفل کیے بغیر تقسیم ہو جائے گا۔
  • stratify_by_column (str، اختیاری، ڈیفالٹ سے کوئی نہیں)
    • یہ پیرامیٹر کسی مخصوص کالم کی بنیاد پر ڈیٹا کی سطحی تقسیم کے لیے استعمال ہوتا ہے۔
    • اگر اس کی وضاحت کی گئی ہے، تو یہ لیبلز یا کلاسز کے کالم کا نام ہونا چاہیے۔
    • ڈیٹا کو اس طریقے سے تقسیم کیا جائے گا جس سے ٹرین میں لیبلز یا کلاسز اور ٹیسٹ اسپلٹس کی تقسیم کو برقرار رکھا جائے۔
  • بیج (int، اختیاری)
    • یہ پیرامیٹر آپ کو پہلے سے طے شدہ BitGenerator کو شروع کرنے کے لیے ایک بیج سیٹ کرنے کی اجازت دیتا ہے۔
    • اگر اسے کوئی نہیں پر سیٹ کیا جاتا ہے، تو آپریٹنگ سسٹم سے ایک تازہ، غیر متوقع اینٹروپی نکال دی جائے گی۔
    • اگر ایک عدد یا صف نما عدد کو پاس کیا جاتا ہے، تو وہ ابتدائی BitGenerator حالت حاصل کرنے کے لیے استعمال ہوں گے۔
  • جنریٹر (numpy.random.Generator، اختیاری)
    • یہ پیرامیٹر آپ کو ڈیٹا سیٹ کی قطاروں کی ترتیب کو شمار کرنے کے لیے ایک NumPy بے ترتیب جنریٹر کی وضاحت کرنے کی اجازت دیتا ہے۔
    • اگر یہ کوئی نہیں (پہلے سے طے شدہ) پر سیٹ ہے تو یہ np.random.default_rng استعمال کرتا ہے جو NumPy کا ڈیفالٹ BitGenerator (PCG64) ہے۔
  • کیپ_ان_میموری (بول، ڈیفالٹس سے غلط)
    • یہ پیرامیٹر اس بات کا تعین کرتا ہے کہ آیا اسپلٹ انڈیکس کو کیش فائل میں لکھنے کے بجائے میموری میں رکھنا ہے۔
    • اگر اسے درست پر سیٹ کیا جاتا ہے تو، تقسیم کے عمل کے دوران اسپلٹ انڈیکس میموری میں محفوظ ہو جائیں گے۔
    • اگر اسے False پر سیٹ کیا جاتا ہے، تو بعد میں استعمال کے لیے تقسیم کے اشاریے ایک کیش فائل میں لکھے جائیں گے۔
  • load_from_cache_file (اختیاری[bool]، اگر کیشنگ فعال ہے تو ڈیفالٹ ٹرو)
    • یہ پیرامیٹر اس بات کا تعین کرتا ہے کہ آیا کیش فائل کا استعمال اسپلٹ انڈیکس کو دوبارہ گنتی کرنے کے بجائے لوڈ کرنے کے لیے کرنا ہے۔
    • اگر اسے True پر سیٹ کیا گیا ہے اور ایک کیش فائل جو تقسیم شدہ اشاریوں کو ذخیرہ کرتی ہے اس کی شناخت کی جا سکتی ہے، اسے استعمال کیا جائے گا۔
    • اگر اسے False پر سیٹ کیا جاتا ہے، تو اسپلٹ انڈیکس کی دوبارہ گنتی کی جائے گی چاہے ایک کیشے فائل موجود ہو۔
    • اگر کیشنگ فعال ہو تو ڈیفالٹ ویلیو درست ہے۔
  • train_cache_file_name (str، اختیاری)
    • یہ پیرامیٹر آپ کو کیش فائل کے لیے مخصوص راستہ یا نام فراہم کرنے کی اجازت دیتا ہے جو ٹرین کی تقسیم کے اشاریہ کو محفوظ کرتی ہے۔
    • اگر اس کی وضاحت کی گئی ہے، تو ٹرین کی تقسیم کے اشاریے اس کیش فائل میں خود بخود پیدا ہونے والے کیشے فائل کے نام کے بجائے محفوظ کیے جائیں گے۔
  • test_cache_file_name (str، اختیاری)
    • یہ پیرامیٹر آپ کو کیش فائل کے لیے ایک مخصوص راستہ یا نام فراہم کرنے کی اجازت دیتا ہے جو ٹیسٹ اسپلٹ انڈیکس کو اسٹور کرتی ہے۔
    • اگر اس کی وضاحت کی گئی ہے تو، ٹیسٹ اسپلٹ انڈیکس خود بخود تیار کردہ کیشے فائل کے نام کے بجائے اس کیش فائل میں محفوظ کیے جائیں گے۔
  • writer_batch_size (int، پہلے سے طے شدہ 1000)
    • یہ پیرامیٹر کیش فائل رائٹر کے لیے ہر تحریری آپریشن میں قطاروں کی تعداد کا تعین کرتا ہے۔
    • یہ میموری کے استعمال اور پروسیسنگ کی رفتار کے درمیان تجارت ہے۔
    • اعلی اقدار تحریری کارروائیوں کی تعداد کو کم کرتی ہیں لیکن پروسیسنگ کے دوران زیادہ میموری استعمال کرتی ہیں۔
    • نچلی قدریں کم عارضی میموری استعمال کرتی ہیں لیکن پروسیسنگ کی رفتار کو قدرے متاثر کر سکتی ہیں۔
  • ٹرین_نیو_فنگر پرنٹ (str، اختیاری، ڈیفالٹ سے کوئی نہیں)
    • یہ پیرامیٹر تبدیلی کو لاگو کرنے کے بعد ٹرین کے سیٹ کے نئے فنگر پرنٹ کی نمائندگی کرتا ہے۔
    • اگر اس کی وضاحت کی گئی ہے، تو یہ ٹرین سیٹ کے لیے ایک نیا فنگر پرنٹ فراہم کرتا ہے۔
    • اگر اسے کوئی نہیں پر سیٹ کیا جاتا ہے تو، نئے فنگر پرنٹ کی گنتی پچھلے فنگر پرنٹ کے ہیش اور تبدیلی کے دلائل کا استعمال کرتے ہوئے کی جاتی ہے۔
  • test_new_fingerprint (str، اختیاری، ڈیفالٹ سے کوئی نہیں)
    • یہ پیرامیٹر تبدیلی کو لاگو کرنے کے بعد ٹیسٹ سیٹ کے نئے فنگر پرنٹ کی نمائندگی کرتا ہے۔
    • اگر اس کی وضاحت کی گئی ہے، تو یہ ٹیسٹ سیٹ کے لیے ایک نیا فنگر پرنٹ فراہم کرتا ہے۔
    • اگر اسے کوئی نہیں پر سیٹ کیا جاتا ہے تو، نئے فنگر پرنٹ کی گنتی پچھلے فنگر پرنٹ کے ہیش اور تبدیلی کے دلائل کا استعمال کرتے ہوئے کی جاتی ہے۔

    نحو:

    sklearn.model_selection import train_test_split سے

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

    ایکس : یہ آپ کے ڈیٹاسیٹ کی ان پٹ خصوصیات یا آزاد متغیرات کی نمائندگی کرتا ہے۔



    • اور : یہ آؤٹ پٹ یا منحصر متغیر کی نمائندگی کرتا ہے جس کی آپ پیشین گوئی کرنے کی کوشش کر رہے ہیں۔
    • test_size : یہ پیرامیٹر ڈیٹاسیٹ کے تناسب کا تعین کرتا ہے جسے جانچ کے لیے مختص کیا جائے گا۔ اسے فلوٹ (مثلاً، 20% کے لیے 0.2) یا ایک عدد (مثلاً، 200 نمونوں کے لیے 200) کے طور پر بیان کیا جا سکتا ہے۔
    • random_state : یہ ایک اختیاری پیرامیٹر ہے جو آپ کو بے ترتیب نمبر جنریٹر کے لیے بیج سیٹ کرنے کی اجازت دیتا ہے۔ یہ اس بات کو یقینی بناتا ہے کہ تقسیم دوبارہ پیدا کرنے کے قابل ہے جس کا مطلب ہے کہ اگر آپ ایک ہی بے ترتیب حالت کی قدر استعمال کرتے ہیں تو آپ کو وہی تقسیم حاصل ہوگا۔

    ٹرین_ٹیسٹ_اسپلٹ فنکشن ڈیٹا کے چار سیٹ واپس کرتا ہے:





    • ایکس_ٹرین : ان پٹ خصوصیات کا تربیتی سیٹ۔
    • ایکس_ٹیسٹ : ان پٹ خصوصیات کا ٹیسٹنگ سیٹ۔
    • y_ٹرین : آؤٹ پٹ لیبلز کا تربیتی سیٹ۔
    • y_ٹیسٹ : آؤٹ پٹ لیبلز کا ٹیسٹنگ سیٹ۔

    مثال : مندرجہ ذیل مثال کے طور پر پروگرام کو محفوظ کیا گیا ہے ' test.py '

    sklearn.model_selection import train_test_split سے

    ڈیٹاسیٹس سے لوڈ_ڈیٹا سیٹ درآمد کریں۔

    # مرحلہ 1: ڈیٹاسیٹ لوڈ کریں۔

    ڈیٹا سیٹ = لوڈ_ڈیٹا سیٹ ('imdb')

    X = ڈیٹاسیٹ['ٹرین']['ٹیکسٹ']

    y = ڈیٹا سیٹ['ٹرین']['لیبل']

    # مرحلہ 2: ڈیٹاسیٹ کو تقسیم کریں۔

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,

    shuffle=True, random_state=42)

    # مرحلہ 3: ڈیٹاسیٹ کو دریافت کریں۔

    پرنٹ ('اصل ڈیٹاسیٹ میں مثالوں کی تعداد:'، len(X))

    پرنٹ ('ٹرین ڈیٹاسیٹ میں مثالوں کی تعداد:'، len(X_train))

    پرنٹ ('ٹیسٹ ڈیٹاسیٹ میں مثالوں کی تعداد:'، len(X_test))

    # مرحلہ 4: مثال کے ڈیٹا تک رسائی اور پرنٹ کریں۔

    پرنٹ کریں('\nٹرین ڈیٹاسیٹ سے مثال:')

    پرنٹ (X_train[0], y_train[0])

    پرنٹ ('\nٹیسٹ ڈیٹاسیٹ سے مثال:')

    پرنٹ (X_test[0], y_test[0])

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



    pip install scikit-learn

    وضاحت: سب سے پہلے، ہم ضروری ماڈیول درآمد کرتے ہیں: train_test_split scikit-learn سے۔

    • ہم load_dataset('imdb') کا استعمال کرتے ہوئے IMDb ڈیٹاسیٹ کو لوڈ کرتے ہیں اور اسے ڈیٹاسیٹ متغیر کو تفویض کرتے ہیں۔
    • ٹرین_ٹیسٹ_اسپلٹ استعمال کرنے کے لیے، ہمیں ان پٹ فیچرز (X) اور متعلقہ لیبلز (y) کو الگ کرنے کی ضرورت ہے۔ اس صورت میں، ہم فرض کرتے ہیں کہ ڈیٹاسیٹ میں 'ٹرین' نامی ایک تقسیم ہے جس میں 'ٹیکسٹ' ان پٹ خصوصیات کے طور پر اور 'لیبل' متعلقہ لیبل کے طور پر ہے۔ آپ کو اپنے ڈیٹا سیٹ کی ساخت کی بنیاد پر کلیدوں کو ایڈجسٹ کرنے کی ضرورت پڑ سکتی ہے۔
    • اس کے بعد ہم ان پٹ فیچرز (X) اور لیبلز (y) کو دوسرے پیرامیٹرز کے ساتھ ٹرین_ٹیسٹ_اسپلٹ میں منتقل کرتے ہیں۔ اس مثال میں، ہم نے test_size کو 0.2 پر سیٹ کیا جس کا مطلب ہے کہ 20% ڈیٹا ٹیسٹنگ کے لیے مختص کیا جائے گا۔ شفل پیرامیٹر کو 'True' پر سیٹ کیا گیا ہے تاکہ ڈیٹا کو تقسیم کرنے سے پہلے تصادفی طور پر شفل کیا جا سکے، اور random_state پیرامیٹر کو دوبارہ پیدا کرنے کے لیے 42 پر سیٹ کیا گیا ہے۔
    • ٹرین_ٹیسٹ_اسپلٹ فنکشن ڈیٹا کے چار سیٹ واپس کرتا ہے: X_train، X_test، y_train، اور y_test۔ یہ بالترتیب ان پٹ خصوصیات اور لیبلز کی تربیت اور جانچ کے ذیلی سیٹوں کی نمائندگی کرتے ہیں۔
    • ہم اصل ڈیٹاسیٹ (len(X))، ٹریننگ ڈیٹاسیٹ (len(X_train))، اور ٹیسٹ ڈیٹاسیٹ (len(X_test)) میں مثالوں کی تعداد پرنٹ کرتے ہیں۔ یہ ہمیں تقسیم کرنے کے عمل کی تصدیق کرنے اور اس بات کو یقینی بنانے کی اجازت دیتا ہے کہ سب سیٹ صحیح طریقے سے بنائے گئے ہیں۔
    • آخر میں، ہم ٹریننگ ڈیٹاسیٹ (X_train[0], y_train[0]) اور ٹیسٹ ڈیٹاسیٹ (X_test[0], y_test[0]) سے ایک مثال تک رسائی اور پرنٹ کرتے ہیں۔

    آؤٹ پٹ : ہم Python 'test.py' کا استعمال کرتے ہوئے پہلے سے محفوظ کردہ پروگرام چلاتے ہیں۔

    نتیجہ

    ٹرین ٹیسٹ اسپلٹ فنکشنلٹی جو Hugging Face's datasets لائبریری کے ذریعے فراہم کی جاتی ہے، scikit-learn's train_test_split فنکشن کے ساتھ مل کر، ڈیٹا سیٹ کو علیحدہ تربیت اور ٹیسٹنگ سب سیٹس میں تقسیم کرنے کا ایک آسان اور موثر طریقہ پیش کرتا ہے۔

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

    ٹرین_ٹیسٹ_اسپلٹ فنکشن کے پیرامیٹرز آپ کو اسپلٹ کے مختلف پہلوؤں کو کنٹرول کرنے کی اجازت دیتے ہیں جیسے کہ ٹیسٹ سیٹ کا سائز (ٹیسٹ_سائز)، ڈیٹا کو شفل کرنا (شفل)، اور مخصوص کالم (stratify_by_column) کی بنیاد پر اسٹرٹیفائیڈ اسپلٹ کرنا۔ مزید برآں، آپ دوبارہ پیدا کرنے کے لیے بیج کی قیمت (بیج) کی وضاحت کر سکتے ہیں اور تقسیم کے اشاریہ کو ذخیرہ کرنے کے لیے کیشے فائل کے ناموں کو اپنی مرضی کے مطابق بنا سکتے ہیں (ٹرین_کیچ_فائل_نام اور ٹیسٹ_کیچ_فائل_نام)۔

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

    مجموعی طور پر، Hugging Face کی ڈیٹاسیٹس لائبریری میں ٹرین-ٹیسٹ اسپلٹ کی فعالیت، scikit-learn's train_test_split کے ساتھ مل کر، موثر ڈیٹا کی تقسیم، ماڈل کی تشخیص، اور مضبوط مشین لرننگ سلوشنز کی ترقی کے لیے ایک طاقتور ٹول سیٹ فراہم کرتی ہے۔