کدگذاری برچسب «Label Encoding» یکی از تکنیکهای مهم در پیش پردازش دادهها «Data Preprocessing» در پروژههای یادگیری ماشین «Machine Learning» و داده کاوی «Data Mining» است که به منظور تبدیل دادههای دستهای به دادههای عددی استفاده میشود. در این مقاله از مجله پی استور به نحوه کدگذاری برچسب در پایتون همراه با مثال و پیاده سازی خواهیم پرداخت.
مقدمه
کدگذاری برچسب به ماشینهای یادگیری اجازه میدهد تا با دادههای عددی که تنها ورودیهای مدل هستند، کار کنند. به کمک کدگذاری برچسب، میتوان دادههای دستهای را به شکل قابل فهم برای الگوریتمهای یادگیری ماشین تبدیل کرد و از آنها برای آموزش مدلهای مختلف استفاده کرد. استفاده نادرست از کدگذاری برچسب ممکن است منجر به مشکلاتی در مدل شود، به خصوص در مواردی که اطلاعات ترتیبی بین دستهها وجود ندارد. در این مقاله، ابتدا توضیح میدهیم که کدگذاری برچسب چیست؟ و چگونه میتوان آن را در پایتون پیادهسازی کرد، و سپس محدودیتهای آن را بررسی خواهیم کرد تا فراگیران عزیز بتوانند در پروژههای خود به درستی از این تکنیک استفاده کنند.
به طور کلی در پروژههای یادگیری ماشین، معمولاً با مجموعه دادههایی سر و کار داریم که دارای ستونهای مختلفی از نوع دستهای هستند که برخی از ستونها عناصر آنها در دسته متغیر ترتیبی قرار دارند به عنوان مثال یک ستون از مجموعه داده ای که سطح درآمد اشخاص را نشان می دهد دارای عناصر کم، متوسط و زیاد است در این حالت میتوانیم این عناصر را با اعداد ۱، ۲، ۳ جایگزین کنیم.
که در آن ۱ نمایانگر کم، ۲ نمایانگر متوسط و ۳ نمایانگر زیاد است. از طریق این نوع برچسب گذاری، سعی میکنیم معنای عنصر را حفظ کنیم و وزنهای بیشتری به عناصر با اولویت بالاتر اختصاص دهیم.
برچسب گذاری چیست؟
برچسب گذاری یک تکنیک است که برای تبدیل ستونهای دستهای «Categorical» به ستونهای عددی «Numerical» استفاده میشود تا بتوانند توسط مدلهای یادگیری ماشین که تنها دادههای عددی میگیرند، تناسب داده شوند. این فرآیند یک مرحله پیش پردازش مهم در یک پروژه یادگیری ماشین است.
مثالی از برچسب گذاری
تصور میکنیم در یک مجموعه داده یا دیتاست، یک ستون قد داریم که عناصر آن Tall، Medium و short هستند. برای تبدیل این ستون دستهای به یک ستون عددی، برچسب گذاری را به این ستون اعمال میکنیم. پس از اعمال برچسب گذاری، ستون قد به یک ستون عددی تبدیل میشود که عناصر آن ۰، ۱ و ۲ هستند، جایی که ۰ نشاندهنده قد بلند، ۱ نشاندهنده قد متوسط و ۲ نشاندهنده قد کوتاه است.
قد | برچسب |
قد بلند | ۰ |
قد متوسط | ۱ |
قد کوتاه | ۲ |
برای پیاده سازی در پایتون، برچسب گذاری را روی مجموعه داده Iris روی ستون هدف که Species نام دارد اعمال میکنیم. این ستون حاوی سه گونه Iris-setosa، Iris-versicolor و Iris-virginica است.
# Import libraries import numpy as np import pandas as pd # Import dataset df = pd.read_csv('../../data/Iris.csv') df['species'].unique()
خروجی:
array(['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'], dtype=object)
پس از اعمال برچسب گذاری با ()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()
خروجی:
array([0, 1, 2], dtype=int64)
محدودیت برچسب گذاری
برچسب گذاری دادههای دستهای را به عددی تبدیل میکند، اما یک عدد منحصر به فرد (شروع از ۰) به هر کلاس داده اختصاص میدهد. این ممکن است منجر به ایجاد مسائل اولویت در طی آموزش مدل مجموعه دادهها شود. یک برچسب با مقدار بالا ممکن است به عنوان دارای اولویت بالاتر از یک برچسب با مقدار پایین تلقی شود.
مثال برای محدودیت برچسب گذاری
یک ویژگی دارای کلاسهای خروجی تهران، تبریز، مشهد است. با برچسب گذاری، این ستون تهران با ۰ جایگزین میشود، تبریز با ۱ و مشهد با ۲ جایگزین میشود.
با این کار میتوان تفسیر کرد که مشهد اولویت بالاتری نسبت به تبریز و تهران دارد در حالی که مدل در حال آموزش است، اما در واقع هیچ رابطه اولویت خاصی بین این شهرها وجود ندارد.
نتیجهگیری
در نهایت، کدگذاری برچسب به عنوان یک روش کارآمد برای تبدیل دادههای دستهای به عددی در پروژههای یادگیری ماشین شناخته میشود. هرچند که این روش ساده میتواند مشکلاتی مانند اولویت نادرست یا تفاسیر نادرست از دادهها ایجاد کند، آگاهی از این محدودیتها و استفاده هوشمندانه از تکنیکهای دیگر، میتواند به بهبود عملکرد مدلهای یادگیری ماشین کمک کند. بنابراین، در هنگام استفاده از کدگذاری برچسب، باید به دقت دادهها را بررسی کرد و درک کاملی از ارتباطات بین دستهها داشت تا از بروز خطاهای آموزش جلوگیری شود.