پیش پردازش داده ها در پایتون؛ یک گام مهم در علم داده

اگر با دنیای ماشین لرنینگ و دیپ لرنینگ آشنا باشید به طور حتم با فرآیندهایی همچون پیش پردازش داده ها هم آشنا هستید. با اینحال افرادی که تازه وارد دنیای علم داده شده اند ذهن شان با سوالات مختلفی همچون «منظور از پردازش داده ها چیست، Preprocessing چیست؟ و چرا پیش پردازش داده اینقدر مهم است؟»  درگیر خواهد بود. در این مقاله می خواهم به طور خلاصه مراحل پیش پردازش داده ها در پایتون را بررسی کنم و به اهمیت هر کدام از این مراحل بپردازم.

پیش پردازش داده(Data Preprocessing) به چه معناست؟

پیش پردازش داده ها

داده هایی که ما در دنیای واقعی با آن ها سر و کار داریم با داده هایی که در کگل یا سایر سایت های آموزشی مشابه دیده ایم  زمین تا آسمان فرق دارد. برخی از اوقات دیتاستی به دست تان می رسد که پر از داده های گمشده است، داده های پرت زیادی دارد، مقیاس داده ها در ستون های مختلف با هم فرق می کند و داده های کیفی زیادی در آن به چشم می خورد. در چنین شرایطی شما نمی توانید دست روی دست بگذارید و همین دیتاست کثیف و پردازش نشده را به الگوریتم بدهید.

بیشتر الگوریتم هایی که در دنیای ماشین لرنینگ به کار می روند به دنبال دیتاست های تمیز و مرتب شده هستند و وجود هر ناخالصی( مثل داده گمشده، پرت و داده کیفی) می تواند نتایج مدنظر را خراب کند. به همین خاطر مرحله پیش پردازش داده از اهمیت بسیار زیادی برخوردار است. در این مرحله، داده ها را به گونه ای آماده می کنیم که برای ساخت مدل مناسب باشند. اگر بتوانید این مراحل را هوشمندانه پشت سر بگذارید قادر خواهید بود بهره وری و کارایی مدل هایتان را افزایش دهید و مدل دقیق تری برای پیش بینی هایتان بسازید.

 

مراحلی که در پیش پردازش داده خواهیم داشت

 

در این مقاله سعی می کنم مراحل مختلفی که در  Data Preprocessing پیش رویمان داریم را بررسی کنم. آنچه که در این مقاله خواهیم داشت عبارت است از:

 

  • ایمپورت کتابخانه های مورد نیاز
  • ایمپورت دیتاست
  • بررسی داده های گمشده
  • بررسی داده های پرت
  • تبدیل داده های کیفی به کمی
  • نرمالسازی داده ها
  • تقسیم دیتاست به داده های آموزش و تست

 

گام اول: وارد کردن کتابخانه های مورد نیاز

 

ما برای کار با دیتاست هایی که داریم به کتابخانه های مختلفی نیاز خواهیم داشت. هر پروژه به کتابخانه های متفاوتی نیاز دارد. پس این گام به شما و کاری که می خواهید انجام دهید بستگی دارد. فرض کنید یک دیتاست به شما داده اند که حاوی اطلاعات مربوط به بیماران قلبی است.

تنها کاری که شما باید انجام دهید اجرای فرآیند EDA یا همان تجزیه و تحلیل اکتشافی است. در چنین شرایطی استفاده از کتابخانه هایی همچون نامپای، پانداس، matplotlib و Seaborn به شما کمک می کند درک بهتر و دقیق تری از دیتاست داشته باشید. وارد کردن کتابخانه ها در پایتون کار سختی نیست. شما می توانید از عبارت import استفاده کنید. به عنوان مثال اگر می خواهید کتابخانه پانداس را وارد کنید کافیست در ژوپیتر نوت بوک تان عبارت import pandas as pd را بزنید و اینتر را بزنید.

 

گام دوم: ایمپورت دیتاست

 

حالا که کتابخانه های مورد نیازمان را وارد کردیم باید به سراغ دیتاست برویم و آن را هم وارد محیط کاری مان بکنیم. هر دیتاستی فرمت خاص خود را دارد. اگر فرمت فایل شما CSV است می توانید با کد pd.read_csv دیتاست تان را ایمپورت کنید. اگر هم از داده های دیگری همچون اکسل استفاده می کنید می توانید کد بالا را به صورت pd.read_excel بنویسید. به خاطر داشته باشید که دیتاست وارد شده با تابع read_csv یا read_excel به صورت دیتافریم خواهد بود.

 

گام سوم: بررسی داده های گمشده

 

داده های گمشده یا ناموجود جزء مواردی هستند که اگر رفتار درستی با آن ها نشود نتیجه مدل را به کلی تغییر خواهند داد. گاهی از اوقات ممکن است برخی از ستون ها مقدار نداشته باشند یا داده ثبت شده برای آن ها درست نباشد. قبل از اینکه بخواهیم روش برخورد با این داده ها را بررسی کنیم باید ببینیم اصلا دیتاست ما داده گمشده دارد یا خیر. برای اینکار بهتر است از کد data.isnull().sum() استفاده کنید. data اسم دیتاستی است که در مراحل قبلی وارد کردید. به کمک این کد می توانید تعداد داده های نال یا گمشده را در هر ستون ببینید  و بر اساس شرایط تان برای آن ها تصمیم بگیرید.

 

با داده های گمشده چه کنیم؟

 

راستش را بخواهید قانون از پیش نوشته شده ای برای مسائل این چنینی وجود ندارد. در یک پروژه ممکن است مجبور شوید دیتاهای نال یا گمشده را با میانگین آن ستون پر کنید . در پروژه دیگر ممکن است بخواهید داده های گمشده را کلاً حذف کنید و خودتان را از دردسرهای احتمالی برهانید. در مقالات بعدی به طور مفصل و با یک پروژه عملی به بررسی این موضوع و راهکارهای مقابله با داده های گمشده خواهیم پرداخت.

 

گام چهارم: بررسی داده های پرت

 

داده های پرت به داده هایی گفته می شود که ویژگی ها و الگوی آن ها شبیه هیچ کدام از نمونه های ما نیستند. سر و کله این داده ها به دلایل مختلف در دیتاست مان  پیدا می شود. گاهی از اوقات خطای انسانی در ثبت داده ها باعث بروز چنین مشکلی می شود و در برخی از موارد هم وجود یک تقلب داده های پرت را وارد دیتاست مان می کند.

مثلا فرض کنید دیتاست شما مقدار حقوق میانگین کارمندان یک اداره را در خود دارد. شما می دانید که بازه حقوق کارمندان این اداره بین 3 میلیون تا 7 میلیون تومان است. در بررسی های اولیه دیتاست تان متوجه می شوید که برخی از مقادیر بالای 10 میلیون هستند. در چنین شرایطی می توانید به وجود داده های پرت شک کنید و به کمک روش های مختلف فرضیه تان را بسنجید. فقط به خاطر داشته باشید که هر داده ای را نمی توان داده پرت نامید.

با داده های پرت چه کنیم؟

 

خوب اولین کاری که شما باید انجام دهید شناسایی داده های پرت است. استفاده از روش های بصری همچون نمودار scatter plot و باکس پلات اولین گزینه ای است که پیش رو دارید. در گام بعدی باید از روش های دیگری مثل بررسی zscore، بررسی IQR ، استفاده از الگوریتم هایی مثل LOF یا Isolation forest استفاده کنید تا شک تان را به یقین تبدیل نمایید. حالا که وجود داده های پرت را تایید کردید بر اساس پروژه تان باید این داده ها را حذف کنید یا برایشان تصمیم دیگری بگیرید. در مقالات بعدی این موضوع را مفصل تر مورد بررسی قرار خواهم داد.

 

گام پنجم: تبدیل داده های کیفی به کمی

 

بیشتر مدل های یادگیری ماشین از داده های کمی برای یادگیری و تست استفاده می کنند. به همین خاطر شما نمی توانید داده های کیفی را به مدل تان بدهید و انتظار نتایج شگفت انگیز را داشته باشید. اگر دیتاست شما داده کیفی دارد بهتر است در مرحله پیش پردازش داده آن ها را به متغیرهای عددی قابل درک برای کامپیوتر تبدیل کنید. one hot encoding، label encoding  یا استفاده از توابعی همچون lambda به شما کمک می کند این فرآیند را راحت تر و بی دردسرتر طی کنید.

 

گام ششم: نرمالسازی داده ها

 

شاید باور نکنید اما نرمال کردن و استاندارد کردن داده ها از اهمیت بسیار زیادی برخوردار است. بیایید این موضوع را با یک مثال بررسی کنیم تا درک بهتری نسبت به آن داشته باشیم.  رییس تان شما را به دفتر خود فرا می خواند و از شما می خواهد به عنوان یک دیتاآنالیست داده های فروش را بررسی کنید. شما هم تحلیلگر با تجربه ای هستید و به توانایی های خود اطمینان دارید.

پس دیتاست را می گیرید و شاد و خرم راهی اتاق تان می شوید. وقتی آن را بررسی می کنید متوجه می شوید یکی از ستون ها  بازه ای بین 1 میلیون تا 1 میلیارد را دارد و ستون دیگر بین 0 و یک تنظیم شده است. با خودتان می گویید این که مشکلی ندارد. مدل خودش همه چیز را رو به راه می کند!

بعد از اینکه چند ساعت روی مدل تان کار می کنید به نتایج عجیب و غریبی می رسید. تازه اینجاست که متوجه می شوید مقیاس ویژگی های مختلف  بهتر بود به هم نزدیک می شد یا شباهت بیشتری به هم داشت.  در این شرایط می توانید از روش هایی مثل نرمال‌سازی مین-ماکس و نرمال سازی Z-score  و غیره استفاده کنید.

 

 گام آخر: تقسیم دیتاست به داده های آموزش و تست

حالا که همه مراحل بالا را با موفقیت به پایان رسانده ایم به آخرین گام از فرآیند پیش پردازش داده ها می رسیم. گاهی از اوقات برای اینکه بتوانیم دقت مدل هایمان را بسنجیم دیتاست مان را به دو بخش train و test تقسیم بندی می کنیم. زمانی که الگوریتمی را روی داده ها اعمال می کنیم در ابتدا داده های train مورد استفاده قرار می گیرد. در واقع الگوریتم از داده های ترین برای یادگیری خود استفاده می کند. بعد از اینکه مدل ساخته شد حالا می توانیم داده های تست را به آن بدهیم و دقت آن را بررسی کنیم. کتابخانه scikit learn  به شما اجازه می دهد اینکار را تنها با یک خط انجام دهید.

دیدگاهتان را بنویسید