در جلسه 12 از نیچ کورس آموزش رایگان یادگیری ماشین با پایتون می خواهیم در مورد کدگذاری برچسب با پایتون صحبت کنیم.
وقتی در پروژههای یادگیری ماشین (ML) کار میکنیم، اغلب با دادههایی روبرو میشویم که ستونهایی با دستهبندیهای مختلف دارند. مثلاً گاهی یک ستون ممکن است مقادیر ترتیبی داشته باشد، همانند ستونی با نام “سطح درآمد” که مقادیر “پایین”، “متوسط” و “بالا” در آن وجود دارد.
در این موارد، میتوانیم این مقادیر را با اعداد ۱، ۲ و ۳ جایگزین کنیم؛ که در آن ۱ نمایانگر “پایین”، ۲ نمایانگر “متوسط” و ۳ نمایانگر “بالا” است.
با استفاده از این نوع کدگذاری، ما تلاش میکنیم که معنای واقعی مقدار را حفظ کرده و به مقادیر با اولویت بالاتر وزن بیشتری بدهیم.
کدگذاری برچسب
کدگذاری برچسب، روشی است که با استفاده از آن، ستونهای دستهای به اعداد تبدیل میشوند تا بتوانیم آنها را در مدلهای یادگیری ماشین که فقط با دادههای عددی کار میکنند، استفاده کنیم. این مرحله از پیش پردازش داده در پروژههای یادگیری ماشین بسیار حیاتی است.
مثال اول کدگذاری برچسب
فرض کنید یک ستون “قد” در یک مجموعه داده داریم که مقادیر آن “بلند”، “متوسط” و “کوتاه” است. برای تبدیل این ستون به عدد، از کدگذاری برچسب استفاده میکنیم. پس از این کدگذاری، مقادیر ستون “قد” به ۰، ۱ و ۲ تغییر میکند، که ۰ برای “بلند”، ۱ برای “متوسط” و ۲ برای “کوتاه” است.
مقدار | قد |
بلند | |
1 | متوسط |
2 | کوتاه |
مثال دوم کدگذاری برچسب
برای مجموعه داده ایریس، میخواهیم کدگذاری برچسب را روی ستون “گونه” اعمال کنیم. این ستون شامل سه گونه است: ایریس-ستوسا، ایریس-ورسیکالر و ایریس-ویرجینیکا.
(برای اجرای کد زیر نیاز است که فایل دیتاست ایریس با فرمت csv در مسیر فایل پایتونی شما قرار داشته باشد)
# Import libraries import numpy as np import pandas as pd # Import dataset df = pd.read_csv('../../data/Iris.csv') print(df['species'].unique())
وقتی از `()LabelEncoder` استفاده میکنیم، مقادیر دستهبندی به اعداد (int) جایگزین میشوند.
# Import label encoder from sklearn import preprocessing # label_encoder object knows # how to understand word labels. label_encoder = preprocessing.LabelEncoder() # Encode labels in column 'species'. df['species']= label_encoder.fit_transform(df['species']) df['species'].unique()
خروجی:
محدودیتهای کدگذاری برچسب
کدگذاری برچسب دادههای دستهای را به عدد تبدیل میکند ولی به هر دسته یک شماره مخصوص میدهد که از ۰ شروع میشود. این مسئله در هنگام آموزش مدل میتواند به مشکلات اولویت منجر شود. به عبارتی، دستهای با عدد بزرگتر ممکن است نسبت به دستهای با عدد کوچکتر، ناخواسته بیشتر ارزش گذاری شود.
مثالی از محدودیت کدگذاری برچسب
فرض کنید یک ستون داده داریم که مقادیر آن شامل مکزیک، پاریس و دوبی است. با استفاده از کدگذاری برچسب، مکزیک به 0، پاریس به 1 و دوبی به 2 تبدیل میشود. با این تغییرات، ممکن است هنگام آموزش مدل به اشتباه فرض شود که دوبی بالاترین اولویت را دارد، در صورتی که واقعاً بین این شهرها هیچ ترتیب اولویتی نیست.