ملٹی کیٹیگوریکل متغیرات کے لیے ون ہاٹ انکوڈنگ کیسے کریں۔

ماخذ نوڈ: 841101

اس مضمون میں، ہم اس بارے میں سیکھیں گے کہ ہم فیچر انجینئرنگ تکنیک ون ہاٹ انکوڈنگ کا استعمال کرتے ہوئے ملٹی کیٹیگوریکل متغیرات کو کس طرح سنبھال سکتے ہیں۔

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

فیچر انجینئرنگ

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

مشین لرننگ ماڈلز کے لیے شفافیت کا تصور ایک پیچیدہ چیز ہے کیونکہ مختلف ماڈلز کو اکثر مختلف قسم کے ڈیٹا کے لیے مختلف طریقوں کی ضرورت ہوتی ہے۔ جیسا کہ:-

  • مسلسل ڈیٹا
  • زمرہ کی خصوصیات
  • لاپتہ اقدار
  • عام کرنا
  • تاریخیں اور وقت

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

واضح متغیرات کو سنبھالنے کے لیے بہت سی تکنیکیں ہیں، کچھ یہ ہیں:

  • لیبل انکوڈنگ یا آرڈینل انکوڈنگ
  • ایک گرم انکوڈنگ
  • ڈمی انکوڈنگ
  • اثر انکوڈنگ
  • بائنری انکوڈنگ
  • بیسل انکوڈنگ
  • ہیش انکوڈنگ
  • ٹارگٹ انکوڈنگ

لہذا، یہاں ہم ون ہاٹ انکوڈنگ کے ذریعے واضح خصوصیات کو سنبھال رہے ہیں، اس طرح سب سے پہلے ہم ون ہاٹ انکوڈنگ پر بات کریں گے۔

ایک گرم انکوڈنگ

ہم جانتے ہیں کہ زمرہ کے متغیرات عددی اقدار کے بجائے لیبل کی قدروں پر مشتمل ہوتے ہیں۔ ممکنہ اقدار کی تعداد اکثر ایک مقررہ سیٹ تک محدود ہوتی ہے۔ زمرہ کے متغیرات کو اکثر برائے نام کہا جاتا ہے۔ بہت سے مشین لرننگ الگورتھم لیبل ڈیٹا پر براہ راست کام نہیں کر سکتے ہیں۔ ان کے لیے تمام ان پٹ متغیرات اور آؤٹ پٹ متغیرات کا عددی ہونا ضروری ہے۔

اس کا مطلب ہے کہ قطعی ڈیٹا کو عددی شکل میں تبدیل کیا جانا چاہیے۔ اگر زمرہ وار متغیر ایک آؤٹ پٹ متغیر ہے، تو آپ ماڈل کے ذریعہ پیشین گوئیوں کو دوبارہ پیش کرنے یا کسی ایپلی کیشن میں استعمال کرنے کے لیے ان کو دوبارہ ایک زمرہ کی شکل میں تبدیل کرنا چاہیں گے۔

مثال کے طور پر جنس پر ڈیٹا کی شکل میں ہے 'مرد' اور 'عورت'.

لیکن اگر ہم ایک گرم انکوڈنگ کا استعمال کرتے ہیں تو پھر انکوڈنگ اور ماڈل کو زمروں کے درمیان قدرتی ترتیب کو ماننے کی اجازت دینے سے کارکردگی خراب ہو سکتی ہے یا غیر متوقع نتائج نکل سکتے ہیں۔

ایک گرم انکوڈنگ کا اطلاق عددی نمائندگی پر کیا جا سکتا ہے۔ یہ وہ جگہ ہے جہاں انٹیجر انکوڈ شدہ متغیر کو ہٹا دیا جاتا ہے اور ہر منفرد انٹیجر ویلیو کے لیے ایک نیا بائنری متغیر شامل کیا جاتا ہے۔

مثال کے طور پر، ہم رنگ متغیر کو انکوڈ کرتے ہیں،

سرخ رنگ  نیلا رنگ
0 1
1 0
0 1

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

ڈیٹا بیس

یہاں ہم house_price کا ڈیٹاسیٹ استعمال کریں گے جو علاقے کے سائز کے مطابق مکان کی قیمت کی پیش گوئی کرنے میں استعمال ہوتا ہے۔

اگر آپ گھر کی قیمت کی پیشن گوئی ڈیٹاسیٹ ڈاؤن لوڈ کرنا چاہتے ہیں تو کلک کریں۔ یہاں.

ماڈیولز درآمد کرنا

اب، ہمیں python سے اہم ماڈیولز درآمد کرنے ہوں گے جو ایک گرم انکوڈنگ کے لیے استعمال ہوں گے۔

# پانڈا درآمد کرنا پانڈا کو pd کے طور پر درآمد کرنا # numpy درآمد numpy کو np کے طور پر درآمد کرنا # sklearn.preprocessing import OneHotEncoder() سے OneHotEncoder درآمد کرنا

یہاں، ہم پانڈا استعمال کرتے ہیں جو ڈیٹا کے تجزیے کے لیے استعمال ہوتے ہیں، NumPyused N-dimensional arrays کے لیے، اور sklearn سے، ہم ایک اہم کلاس One Hot Encoder کو واضح انکوڈنگ کے لیے استعمال کریں گے۔

اب ہمیں Python کا استعمال کرتے ہوئے اس ڈیٹا کو پڑھنا ہے۔

ڈیٹا سیٹ پڑھنا

عام طور پر، ڈیٹاسیٹ CSV کی شکل میں ہوتا ہے، اور ہم جو ڈیٹاسیٹ استعمال کرتے ہیں وہ بھی CSV کی شکل میں ہوتا ہے۔ CSV فائل کو پڑھنے کے لیے ہم pandas read_csv() فنکشن استعمال کریں گے۔ ذیل میں دیکھیں:

# ریڈنگ ڈیٹا سیٹ df = pd.read_csv('house_price.csv') df.head()

آؤٹ پٹ:-

لیکن ہمیں صرف ایک ہاٹ انکوڈر کے لیے دوٹوک متغیرات کا استعمال کرنا ہے اور ہم آسانی سے سمجھنے کے لیے صرف دوٹوک متغیرات کے ساتھ وضاحت کرنے کی کوشش کریں گے۔

ڈیٹا سے زمرہ دار متغیرات کو تقسیم کرنے کے لیے ہمیں یہ چیک کرنا ہوگا کہ کتنی خصوصیات کی قدریں ہیں۔

زمرہ جات کی جانچ کرنا

ویلیو چیک کرنے کے لیے ہم pandas select_dtypes فنکشن استعمال کرتے ہیں جو کہ متغیر کی ڈیٹا اقسام کو منتخب کرنے کے لیے استعمال ہوتا ہے۔

# چیکنگ فیچرز cat = df.select_dtypes(include='O').keys() # ڈسپلے متغیر بلی

آؤٹ پٹ:-

 

اب ہمیں ان عددی کالموں کو ڈیٹاسیٹ سے ڈراپ کرنا ہے اور ہم اپنے استعمال کے لیے اس زمرے کے متغیر کو استعمال کریں گے۔ ہم ون ہاٹ انکوڈنگ کو لاگو کرنے کے لیے ڈیٹاسیٹ سے صرف 3-4 واضح کالم استعمال کرتے ہیں۔

نیا ڈیٹا فریم بنانا

اب، دوٹوک متغیرات کے استعمال کے لیے ہم منتخب زمرہ دار کالموں کا ایک نیا ڈیٹا فریم بنائیں گے۔

# نئے df # ترتیب دینے والے کالم بنانا ہم new_df = pd.read_csv('house_price.csv',usecols=['پڑوس'،'بیرونی اول'، 'بیرونی دوسرا']) new_df.head()

آؤٹ پٹ:-

اب ہمیں یہ معلوم کرنا ہے کہ ہر زمرہ کے کالم میں کتنی منفرد کیٹیگریز موجود ہیں۔

منفرد اقدار کی تلاش

منفرد اقدار تلاش کرنے کے لیے ہم pandas unique() فنکشن استعمال کریں گے۔

new_df.columns میں x کے لیے ہر کالم میں # منفرد قدریں: #prinfting unique values ​​print(x ,':', len(new_df[x].unique()))

آؤٹ پٹ:-

پڑوس: 25
بیرونی 1: 15
بیرونی حصہ 2: 16

اب، ہم اپنی تکنیک پر جائیں گے تاکہ ملٹی کیٹیگوریکل متغیرات پر ون ہاٹ انکوڈنگ لاگو کریں۔

کثیر زمرہ واری ایبلز کے لیے تکنیک

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

اکثر متغیرات

یہاں ہم 20 اکثر متغیرات کو منتخب کریں گے۔

فرض کریں کہ ہم ایک زمرہ وار متغیر لیتے ہیں۔ ہمسایے.

# سرفہرست 20 زمرہ جات تلاش کرنا new_df.Neighborhood.value_counts().sort_values(ascending=False).head(20)

پیداوار:

جب آپ اس آؤٹ پٹ امیج میں دیکھیں گے تو آپ دیکھیں گے کہ نام لیبل پڑوس کے کالموں میں 225 بار دہرایا جا رہا ہے اور ہم نیچے جاتے ہیں یہ تعداد کم ہو رہی ہے۔

اس لیے ہم نے اوپر سے ٹاپ 10 نتائج لیے اور ہم اس ٹاپ 10 رزلٹ کو ون ہاٹ انکوڈنگ میں تبدیل کرتے ہیں اور بائیں لیبل صفر میں بدل جاتے ہیں۔

آؤٹ پٹ:-

 

سب سے زیادہ متواتر زمرہ واری ایبلز کی فہرست

# ٹاپ 10 متغیرات کے ساتھ فہرست بنائیں top_10 = [x for x in new_df.Neighborhood.value_counts().sort_values(ascending=False).head(10).index] top_10

آؤٹ پٹ:-

['نام'،
'CollgCr'،
'اولڈ ٹاؤن'،
'ایڈورڈز'،
'سومرسٹ'،
'گلبرٹ'،
'NridgHt'،
'ساویر'،
'NWAmes'،
'SawyerW']

نیبر ہڈ کالم میں سرفہرست 10 کلیدی لیبلز ہیں۔

بائنری بنائیں

اب، ہمیں top_10 لیبلز کے 10 بائنری متغیرات بنانا ہوں گے۔

# لیبلز کی بائنری بنائیں

ٹاپ_10 میں لیبل کے لیے:

new_df = np.where(new_df['Nighborhood']==label,1,0)

new_df[['پڑوس']+top_10]


آؤٹ پٹ:-

نام CollgCr اولڈ ٹاؤن ایڈورڈز سومرسٹ گلبرٹ NridgHt Sawyer NWAmes SawyerW
0 CollgCr 0 1 0 0 0 0 0 0 0 0
1 وینکر 0 0 0 0 0 0 0 0 0 0
2 CollgCr 0 1 0 0 0 0 0 0 0 0
3 کرافور 0 0 0 0 0 0 0 0 0 0
4 NoRidge 0 0 0 0 0 0 0 0 0 0
5 مچل 0 0 0 0 0 0 0 0 0 0
6 سومرسٹ 0 0 0 0 1 0 0 0 0 0
7 NWAmes 0 0 0 0 0 0 0 0 1 0
8 اولڈ ٹاؤن 0 0 1 0 0 0 0 0 0 0
9 برک سائیڈ 0 0 0 0 0 0 0 0 0 0
10 Sawyer 0 0 0 0 0 0 0 1 0 0
11 NridgHt 0 0 0 0 0 0 1 0 0 0

آپ دیکھ سکتے ہیں کہ ٹاپ_10 لیبل اب بائنری فارمیٹ میں کیسے تبدیل ہوتے ہیں۔

آئیے ایک مثال لیں، جدول میں دیکھیں جہاں 1 انڈکس وینکر جس کا تعلق ہمارے ٹاپ_10 زمرہ جات کے لیبل سے نہیں تھا لہذا اس کا نتیجہ نکلے گا۔ 0 تمام کالم.

اب ہم یہ ان تمام کیٹیگوریکل متغیرات کے لیے کریں گے جنہیں ہم نے اوپر منتخب کیا ہے۔

OneHotEncoding پر تمام منتخب کردہ متغیر

# تمام واضح متغیرات کے لیے ہم نے def top_x(df2,variable,top_x_labels): ٹاپ_x_labels میں لیبل کے لیے: df2[variable+'_'+label] = np.where(data[variable]==label,1,0) # پڑھیں ڈیٹا دوبارہ ڈیٹا = pd.read_csv('D://xdatasets/train.csv',usecols = ['Neighbourhood','Exterior1st','Exterior2nd']) #Nighbourhood کو 10 سب سے زیادہ متواتر زمروں میں encode کریں top_x(data, 'پڑوس'، ٹاپ_10) # ڈسپلے ڈیٹا ڈیٹا۔ ہیڈ()

آؤٹ پٹ:-

اب، یہاں ہم تمام ملٹی کیٹیگریکل متغیرات پر ون ہاٹ انکوڈنگ کا اطلاق کرتے ہیں۔

اب ہم ملٹی ویری ایبلز کے لیے One Hot Encoding کے فوائد اور نقصانات دیکھیں گے۔

فوائد

  • لاگو کرنے کے لئے براہ راست
  • متغیر کی تلاش کے لیے زیادہ وقت کی ضرورت نہیں ہے۔
  • خصوصیت کی جگہ کو بڑے پیمانے پر نہیں پھیلاتا ہے۔

خامیاں

  • ایسی کوئی بھی معلومات شامل نہیں کرتا ہے جو متغیر کو مزید پیش گوئی کر سکے۔
  • نظر انداز متغیرات کی معلومات نہ رکھیں۔

اختتامی نوٹس

تو، اس کا خلاصہ یہ ہے کہ ہم سیکھتے ہیں کہ ملٹی کیٹیگوریکل متغیرات کو کیسے ہینڈل کیا جائے، اگر آپ کو یہ مسئلہ درپیش ہے تو یہ بہت مشکل کام ہے۔ تو اس مضمون کو پڑھنے کے لیے آپ کا شکریہ۔

Linkedin پر مجھ سے جڑیں: پروفائل

میرے دوسرے مضامین پڑھیں: https://www.analyticsvidhya.com/blog/author/mayurbadole2407/

شکریہ 😎

اس مضمون میں دکھایا گیا میڈیا Analytics ودھیا کی ملکیت نہیں ہے اور مصنف کی صوابدید پر استعمال کیا جاتا ہے۔

آپ یہ مضمون ہماری موبائل ایپ پر بھی پڑھ سکتے ہیں۔ اسے Google Play پر حاصل کریں

متعلقہ مضامین

ماخذ: https://www.analyticsvidhya.com/blog/2021/05/how-to-perform-one-hot-encoding-for-multi-categorical-variables/

ٹائم اسٹیمپ:

سے زیادہ تجزیات ودھیا