پاکسازی داده «Data Cleaning» یکی از بخشهای مهم در یادگیری ماشین «Machine Learning» است که نقش قابلتوجهی در ساخت مدل ایفا میکند. در این مقاله، پاکسازی داده، اهمیت آن و پیادهسازی آن با زبان برنامهنویسی پایتون را بررسی خواهیم کرد.
پاکسازی داده چیست؟
پاکسازی داده مرحلهای مهم و حیاتی در یادگیری ماشین (ML) است که شامل شناسایی و حذف دادههای ناقص، تکراری یا نامربوط میشود. هدف از پاکسازی داده این است که دادهها دقیق، سازگار و عاری از خطا باشند، چرا که دادههای نادرست یا ناسازگار میتوانند عملکرد مدل یادگیری ماشین را تحت تأثیر منفی قرار دهند. دانشمندان داده معمولاً بخش بزرگی از زمان خود را صرف این مرحله میکنند، چرا که باور دارند «داده بهتر از الگوریتمها عمل میکند.»
پاکسازی داده، که با نام پیشپردازش داده «Data Preprocessing» نیز شناخته میشود، مرحلهای ضروری در علوم داده «Data Science» است که شامل شناسایی و اصلاح یا حذف خطاها، ناسازگاریها و نواقص در دادهها میشود تا کیفیت و قابلیت استفاده از آن بهبود یابد. این مرحله اهمیت زیادی دارد، زیرا داده خام معمولاً پر از نویز «noisy»، ناقص «incomplete»، و ناسازگار «inconsistent» هستند که میتواند دقت «accuracy» و اعتبار «reliability» نتایج حاصل را تحت تأثیر قرار دهد.
چرا پاکسازی داده مهم است؟
پاکسازی داده مرحلهای کلیدی در فرآیند آمادهسازی دادهها است که نقشی اساسی در تضمین دقت، قابلیت اطمینان «reliability» و کیفیت کلی «overall quality» یک مجموعه داده «DataSet» ایفا میکند.
در تصمیمگیری، صحت نتیجهگیریها بهشدت به پاک بودن دادههای پایه وابسته است. بدون پاکسازی مناسب دادهها، نواقص، نقاط پرت، مقادیر گمشده و ناسازگاریها میتوانند اعتبار نتایج تحلیلی را زیر سؤال ببرند. علاوه بر این، دادههای تمیز مدلسازی و شناسایی الگوها را مؤثرتر میکند، زیرا الگوریتمها زمانی که با دادههای باکیفیت و بدون خطا تغذیه شوند، عملکرد بهتری دارند.
همچنین، مجموعه دادههای تمیز تفسیرپذیری یافتهها را بهبود میبخشند و به فرمولبندی مدلها کمک میکنند.
پاکسازی داده در علم داده
پاکسازی داده بخش جداییناپذیری از علم داده است که نقش اساسی در تضمین دقت و قابلیت اطمینان مجموعه دادهها ایفا میکند. در حوزه علم داده، که بینشها و پیشبینیها از مجموعههای داده گسترده و پیچیده استخراج میشوند، کیفیت دادههای ورودی تأثیر چشمگیری بر اعتبار نتایج تحلیلی دارد.
پاکسازی داده شامل شناسایی و اصلاح سیستماتیک خطاها «Systematic Identification»، ناسازگاریها و نواقص موجود در یک مجموعه داده است و وظایفی مانند مدیریت مقادیر گمشده، حذف مقادیر تکراری و رسیدگی به نقاط پرت را در بر میگیرد. این فرآیند دقیق برای ارتقای یکپارچگی تحلیلها، بهبود مدلسازی دقیقتر و در نهایت، تسهیل تصمیمگیریهای آگاهانه بر اساس دادههای معتبر و باکیفیت، ضروری است.
مراحل انجام پاکسازی داده
پاکسازی داده شامل یک فرآیند سیستماتیک برای شناسایی و اصلاح خطاها، ناسازگاریها و نواقص موجود در یک مجموعه داده است. مراحل اصلی برای انجام پاکسازی داده به شرح زیر است:
- حذف مشاهدات ناخواسته: شناسایی و حذف مشاهدات نامربوط یا زائد از مجموعه داده. این مرحله شامل بررسی دادهها برای یافتن رکوردهای تکراری، اطلاعات نامرتبط، یا نقاط دادهای است که تأثیر معناداری در تحلیل ندارند. حذف مشاهدات ناخواسته، مجموعه داده را بهینه کرده، نویز را کاهش داده و کیفیت کلی آن را بهبود میبخشد.
- رفع خطاهای ساختاری: پرداختن به مشکلات ساختاری در مجموعه داده، مانند ناسازگاری در قالب دادهها، قراردادهای نامگذاری، یا انواع متغیرها. قالبها را استاندارد کنید، اختلافات نامگذاری را اصلاح کنید و از یکنواختی در نمایش دادهها اطمینان حاصل کنید. رفع خطاهای ساختاری باعث بهبود سازگاری دادهها و تسهیل تحلیل و تفسیر دقیق میشود.
- مدیریت نقاط پرت ناخواسته: شناسایی و مدیریت نقاط پرت که به طور قابلتوجهی از سایر دادهها فاصله دارند. بسته به زمینه، تصمیم بگیرید که آیا باید نقاط پرت را حذف کرد یا آنها را تغییر داد تا تأثیرشان بر تحلیل کاهش یابد. مدیریت نقاط پرت برای دستیابی به بینشهای دقیقتر و قابلاعتمادتر از دادهها ضروری است.
- مدیریت دادههای گمشده: ایجاد استراتژیهایی برای مدیریت مؤثر دادههای گمشده. این استراتژیها ممکن است شامل تخمین مقادیر گمشده با استفاده از روشهای آماری، حذف رکوردهایی با مقادیر گمشده، یا استفاده از تکنیکهای پیشرفته تخمین باشد. مدیریت دادههای گمشده یک مجموعه داده کاملتر ایجاد میکند، از ایجاد سوگیری جلوگیری کرده و یکپارچگی تحلیلها را حفظ میکند.
چگونه پاکسازی داده را انجام دهیم؟
پاکسازی داده شامل یک رویکرد سیستماتیک برای بهبود کیفیت و قابلیت اطمینان یک مجموعه داده است. این فرآیند با درک کامل از دادهها آغاز میشود، شامل بررسی ساختار آن و شناسایی مشکلاتی مانند مقادیر گمشده، دادههای تکراری و نقاط پرت.
- مدیریت مقادیر گمشده: تصمیمگیریهای استراتژیک درباره جایگزینی (تخمین) یا حذف دادههای گمشده انجام میشود.
- حذف دادههای تکراری: دادههای تکراری به طور سیستماتیک حذف میشوند تا از ایجاد افزونگی جلوگیری شود.
- مدیریت نقاط پرت: اطمینان حاصل میشود که مقادیر افراطی تأثیر نامناسبی بر تحلیل نداشته باشند.
- رفع خطاهای ساختاری: قالبها و انواع متغیرها استانداردسازی شده و ناسازگاریها برطرف میشوند تا سازگاری دادهها افزایش یابد.
در تمام مراحل، مستندسازی تغییرات برای شفافیت و قابلیت بازتولید بسیار مهم است. اعتبارسنجی و آزمایش مکرر، اثربخشی مراحل پاکسازی داده را تأیید میکند. در نهایت، یک مجموعه داده پالایششده آماده برای تحلیلهای معنادار و استخراج بینشهای کاربردی خواهد بود.
پیاده سازی پاکسازی داده در پایتون
برای درک بهتر مراحل پاکسازی دادهها، از مجموعه داده Titanic (لینک +) استفاده میکنیم. مراحل اصلی عبارتند از:
- وارد کردن کتابخانههای ضروری
- ابتدا کتابخانههای موردنیاز را برای تحلیل دادهها وارد میکنیم.
- بارگذاری دیتاست
- دیتاست Titanic را بارگذاری میکنیم (فایل بهصورت CSV است، از تابع read_csv استفاده میکنیم).
- بررسی اطلاعات دادهها با ()df.info
- برای مشاهده خلاصهای از ساختار داده، شامل تعداد مقادیر گمشده، نوع متغیرها و سایر اطلاعات از تابع ()info استفاده میکنیم.
import pandas as pd import numpy as np # Load the dataset df = pd.read_csv('titanic.csv') df.head()
خروجی:
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked ۰ ۱ ۰ ۳ Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S ۱ ۲ ۱ ۱ Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C ۲ ۳ ۱ ۳ Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S ۳ ۴ ۱ ۱ Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S ۴ ۵ ۰ ۳ Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S
بررسی و کاوش دادهها
ابتدا برای درک بهتر دادهها، ساختار آنها را بررسی کرده و مقادیر گمشده، نقاط پرت و ناسازگاریها را شناسایی میکنیم. همچنین، ردیفهای تکراری را با استفاده از کد زیر بررسی خواهیم کرد:
df.duplicated()
خروجی:
۰ False ۱ False ۲ False ۳ False ۴ False ... ۸۸۶ False ۸۸۷ False ۸۸۸ False ۸۸۹ False ۸۹۰ False Length: 891, dtype: bool
بررسی اطلاعات کلی مجموعه داده
برای بررسی اطلاعات کلی مجموعه داده از دستور ()df.info استفاده میکنیم. این دستور اطلاعاتی مانند تعداد ستونها، نام ستونها، نوع دادهها، تعداد مقادیر غیر گمشده، و حافظه مصرفی را ارائه میدهد.
df.info()
خروجی:
<class 'pandas.core.frame.DataFrame'> RangeIndex: 891 entries, 0 to 890 Data columns (total 12 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- ۰ PassengerId 891 non-null int64 ۱ Survived 891 non-null int64 ۲ Pclass 891 non-null int64 ۳ Name 891 non-null object ۴ Sex 891 non-null object ۵ Age 714 non-null float64 ۶ SibSp 891 non-null int64 ۷ Parch 891 non-null int64 ۸ Ticket 891 non-null object ۹ Fare 891 non-null float64 ۱۰ Cabin 204 non-null object ۱۱ Embarked 889 non-null object dtypes: float64(2), int64(5), object(5) memory usage: 83.7+ KB
از اطلاعات دادههای بالا، مشاهده میشود که ستونهای Age و Cabin تعداد مقادیر نابرابری دارند. بهویژه، ممکن است مقدار گمشده در ستون Age وجود داشته باشد و ستون Cabin معمولاً دارای دادههای ناقص باشد، زیرا بسیاری از مقادیر آن گم شدهاند.
همچنین، بعضی از ستونها به صورت دستهای (Categorical) هستند که معمولاً نوع داده آنها object است، برخی دیگر عدد صحیح (integer) و اعشاری (float) هستند که برای تجزیه و تحلیلهای عددی استفاده میشوند.
بررسی ستونهای دستهای و عددی
# Categorical columns cat_col = [col for col in df.columns if df[col].dtype == 'object'] print('Categorical columns :',cat_col) # Numerical columns num_col = [col for col in df.columns if df[col].dtype != 'object'] print('Numerical columns :',num_col)
خروجی:
Categorical columns : ['Name', 'Sex', 'Ticket', 'Cabin', 'Embarked'] Numerical columns : ['PassengerId', 'Survived', 'Pclass', 'Age', 'SibSp', 'Parch', 'Fare']
میتوانیم تعداد کل مقادیر منحصر به فرد را در ستونهای دستهای بررسی کنیم:
df[cat_col].nunique()
خروجی:
Name 891 Sex 2 Ticket 681 Cabin 147 Embarked 3 dtype: int64
حذف تمامی مشاهدات غیرضروری
این مرحله شامل حذف دادههای تکراری، اضافی یا نامربوط از مجموعه داده است. دادههای تکراری معمولاً در هنگام جمعآوری دادهها ایجاد میشوند و دادههای نامربوط آنهایی هستند که به طور واقعی با مشکلی که میخواهید حل کنید، مرتبط نیستند.
- دادههای اضافی: این دادهها کارایی را کاهش میدهند زیرا دادهها تکرار میشوند و ممکن است هم به سمت نتایج صحیح و هم به سمت نتایج غلط میل کنند، که باعث تولید نتایج غیرقابل اعتماد میشود.
- دادههای نامربوط: این دادهها هیچ استفادهای برای تحلیل ما ندارند و میتوانند به راحتی حذف شوند.
در نهایت، باید تصمیم بگیریم که کدام عوامل برای تحلیل ما مهم هستند.
همانطور که میدانیم، ماشینها نمیتوانند دادههای متنی را پردازش کنند، بنابراین باید یا ستونهای دستهای را حذف کنیم یا مقادیر آنها را به انواع عددی تبدیل کنیم. در اینجا تصمیم گرفتهایم که ستون Name را حذف کنیم، زیرا نامها همیشه منحصر به فرد هستند و تأثیر زیادی روی متغیرهای هدف نخواهند داشت.
df['Ticket'].unique()[:50]
خروجی:
array(['A/5 21171', 'PC 17599', 'STON/O2. 3101282', '113803', '373450', '۳۳۰۸۷۷', '۱۷۴۶۳', '۳۴۹۹۰۹', '۳۴۷۷۴۲', '۲۳۷۷۳۶', 'PP 9549', '۱۱۳۷۸۳', 'A/5. 2151', '347082', '350406', '248706', '382652', '۲۴۴۳۷۳', '۳۴۵۷۶۳', '۲۶۴۹', '۲۳۹۸۶۵', '۲۴۸۶۹۸', '۳۳۰۹۲۳', '۱۱۳۷۸۸', '۳۴۷۰۷۷', '۲۶۳۱', '۱۹۹۵۰', '۳۳۰۹۵۹', '۳۴۹۲۱۶', 'PC 17601', 'PC 17569', '335677', 'C.A. 24579', 'PC 17604', '113789', '2677', 'A./5. 2152', '345764', '2651', '7546', '11668', '349253', 'SC/Paris 2123', '330958', 'S.C./A.4. 23567', '370371', '14311', '۲۶۶۲', '۳۴۹۲۳۷', '۳۱۰۱۲۹۵'], dtype=object)
بر اساس خروجی بدست آمده مشاهده میشود که برخی تیکتها از دو قسمت تشکیل شدهاند، مانند “A/5 21171” که از ترکیب “A/5” و “۲۱۱۷۱” به وجود آمده است. این ساختار ممکن است بر متغیرهای هدف تأثیر بگذارد و باعث ایجاد ویژگیهای جدید شود.
در Feature Engineering، ما از یک ستون یا مجموعهای از ستونها ویژگیهای جدید استخراج میکنیم که میتوانند اطلاعات بیشتری برای مدل فراهم کنند. برای مثال، میتوانیم ستونهای Ticket و Name را ترکیب کرده یا اطلاعات مفیدی از آنها استخراج کنیم. اما در این مورد، تصمیم گرفتهایم که این ستونها را حذف کنیم، زیرا:
- Name همیشه منحصر به فرد است و تأثیر زیادی بر متغیر هدف نخواهد داشت.
- Ticket به دلیل پیچیدگی و وجود ترکیبات مختلف، ممکن است ویژگیهای پیچیدهای ایجاد کند که در این تحلیل به کار نمیآید.
حذف ستونهای Name و Ticket
df1 = df.drop(columns=['Name','Ticket']) df1.shape
خروجی:
(۸۹۱, ۱۰)
مدیریت دادههای گمشده
دادههای گمشده یا از دست رفته یک مشکل رایج در مجموعه داده های دنیای واقعی است و می تواند به دلایل مختلفی مانند خطاهای انسانی، خرابی سیستم یا مشکلات جمعآوری دادهها رخ دهد. تکنیک های مختلفی را میتوان برای مدیریت دادههای گمشده مانند از جمله آمادهسازی دادهها (Imputation)، حذف (Deletion) یا جایگزینی (Substitution) استفاده کرد.
در این مقاله برای هر سطر با استفاده از تابع ()df.isnull درصد مقادیر از گمشده را بررسی میکنیم که مقادیر بولی (True یا False) را برمی گرداند. و تابع ()sum که تعداد کل ردیفهای مقادیر تهی را جمع میکند و آن را بر تعداد کل ردیفهای موجود در مجموعه داده تقسیم میکنیم، سپس آنها را ضرب میکنیم تا مقادیری را در بهصورت درصدی بدست میآوریم، یعنی در هر ۱۰۰ مقدار، چه مقدار مقدار صفر است.
round((df1.isnull().sum()/df1.shape[0])*100,2)
خروجی:
PassengerId 0.00 Survived 0.00 Pclass 0.00 Sex 0.00 Age 19.87 SibSp 0.00 Parch 0.00 Fare 0.00 Cabin 77.10 Embarked 0.22 dtype: float64
ما نمیتوانیم مشاهدات گمشده را نادیده بگیریم یا حذف کنیم. این دادهها باید با دقت مدیریت شوند زیرا ممکن است نشاندهنده چیزی مهم باشند. همانطور که از نتایج بالا مشاهده میکنیم، ستون Cabin دارای ۷۷% مقادیر گمشده است و Age دارای ۱۹.۸۷% و Embarked دارای ۰.۲۲% مقادیر گمشده هستند.
بنابراین، پر کردن ۷۷% مقادیر گمشده در ستون Cabin ایده خوبی نیست. به همین دلیل، ستون Cabin را حذف خواهیم کرد. ستون Embarked فقط ۰.۲۲% مقادیر گمشده دارد، بنابراین ردیفهای دارای مقادیر گمشده در این ستون را حذف خواهیم کرد.
df2 = df1.drop(columns='Cabin') df2.dropna(subset=['Embarked'], axis=0, inplace=True) df2.shape
خروجی:
(۸۸۹, ۹)
- جایگزینی مقادیر گمشده از مشاهدات گذشته
- مقادیر گمشده معمولاً بهطور خودکار اطلاعاتی در خود دارد و باید به الگوریتم خود بگویید که آیا یک مقدار گمشده بوده است یا نه.
- حتی اگر مدلی برای جایگزینی مقادیر گمشده بسازید، شما هیچ اطلاعات جدیدی اضافه نمیکنید. تنها الگوهایی که توسط ویژگیهای دیگر ارائه شدهاند را تقویت میکنید.
برای این منظور میتوانیم از جایگزینی میانگین یا جایگزینی میانه استفاده کنیم.
- جایگزینی میانگین مناسب است زمانی که دادهها بهطور نرمال توزیع شدهاند و هیچ مقدار دور از انتهایی (outlier) شدیدی ندارند.
- جایگزینی میانه ترجیح داده میشود زمانی که دادهها حاوی مقادیر دور از انتهایی (outlier) هستند یا دادهها بهطور معکوس (skewed) توزیع شدهاند.
# Mean imputation df3 = df2.fillna(df2.Age.mean()) # Let's check the null values again df3.isnull().sum()
خروجی:
PassengerId 0 Survived 0 Pclass 0 Sex 0 Age 0 SibSp 0 Parch 0 Fare 0 Embarked 0 dtype: int64
مدیریت مقادیر Outliers
مقادیر Outliers مقادیر شدیدی هستند که به طور قابل توجهی از بیشتر دادهها انحراف دارند. این مقادیر میتوانند بر تحلیلها و عملکرد مدل تأثیر منفی بگذارند. تکنیکهایی مانند کلاستربندی، درونیابی (Interpolation) یا تبدیل دادهها برای مدیریت مقادیر دور از انتها استفاده میشوند.
برای شناسایی مقادیر دور از انتها معمولاً از نمودار جعبهای (Box plot) استفاده میکنیم. نمودار جعبهای که به آن نمودار جعبه و شاخک نیز گفته میشود، نمایشی گرافیکی از توزیع یک مجموعه داده است. این نمودار میانگین، چارکها و مقادیر دور از انتها را نشان میدهد. خط داخل جعبه نمایانگر میانه است، در حالی که خود جعبه محدوده بین چارک اول (Q1) و چارک سوم (Q3) را نشان میدهد (که به آن محدوده بین چارکی (IQR) گفته میشود). شاخکها تا بیشترین مقادیر غیر دور از انتها که در ۱.۵ برابر IQR قرار دارند، امتداد مییابند. نقاطی که فراتر از شاخکها قرار دارند به عنوان مقادیر دور از انتها در نظر گرفته میشوند.
نمودار جعبهای یک نمای کلی از دامنه دادهها را به راحتی نشان میدهد و این امکان را فراهم میکند که مقادیر دور از انتها یا انحراف در توزیع دادهها شناسایی شود.
import matplotlib.pyplot as plt plt.boxplot(df3['Age'], vert=False) plt.ylabel('Variable') plt.xlabel('Age') plt.title('Box Plot') plt.show()
خروجی:
همانطور که از نمودار جعبهای (Box and Whisker Plot) بالا مشاهده میکنیم، دادههای Age دارای مقادیر دور از انتها (Outliers) هستند. مقادیر کمتر از ۵ و بیشتر از ۵۵ به عنوان مقادیر دور از انتها شناخته میشوند.
# calculate summary statistics mean = df3['Age'].mean() std = df3['Age'].std() # Calculate the lower and upper bounds lower_bound = mean - std*2 upper_bound = mean + std*2 print('Lower Bound :',lower_bound) print('Upper Bound :',upper_bound) # Drop the outliers df4 = df3[(df3['Age'] >= lower_bound) & (df3['Age'] <= upper_bound)]
خروجی:
Lower Bound : 3.705400107925648 Upper Bound : 55.57878528533278
به همین ترتیب، می توانیم نقاط پرت ستون های باقیمانده را حذف کنیم.
تبدیل دادهها (Data Transformation)
تبدیل دادهها شامل تغییر دادهها از یک فرم به فرم دیگر است تا آنها را برای تحلیل مناسبتر کند. تکنیکهایی مانند نرمالسازی (Normalization)، مقیاسبندی (Scaling) یا کدگذاری (Encoding) میتوانند برای تبدیل دادهها استفاده شوند.
اعتبارسنجی و تایید دادهها (Data Validation and Verification)
اعتبارسنجی و تایید دادهها شامل اطمینان از دقت و انسجام دادهها با مقایسه آنها با منابع خارجی یا دانش تخصصی است.
برای پیشبینی با یادگیری ماشین ابتدا ویژگیهای مستقل و هدف را از هم جدا میکنیم. در اینجا، فقط ویژگیهای ‘Sex’، ‘Age’، ‘SibSp’، ‘Parch’، ‘Fare’ و ‘Embarked’ را به عنوان ویژگیهای مستقل در نظر میگیریم و ‘Survived’ را به عنوان متغیر هدف. زیرا ‘PassengerId’ تأثیری بر نرخ بقا ندارد.
X = df3[['Pclass','Sex','Age', 'SibSp','Parch','Fare','Embarked']] Y = df3['Survived']
فرمتدهی دادهها (Data Formatting)
فرمتدهی دادهها شامل تبدیل دادهها به یک فرمت یا ساختار استاندارد است که بتوان به راحتی توسط الگوریتمها یا مدلهای مورد استفاده برای تحلیل پردازش شود. در اینجا به تکنیکهای معمولی فرمتدهی دادهها مانند مقیاسبندی (Scaling) و نرمالسازی (Normalization) پرداخته میشود.
مقیاسبندی (Scaling)
مقیاسبندی شامل تبدیل مقادیر ویژگیها به یک بازه خاص است. این کار شکل توزیع اصلی را حفظ کرده و در عین حال مقیاس آن را تغییر میدهد. مقیاسبندی بهویژه زمانی مفید است که ویژگیها مقیاسهای مختلفی داشته باشند و برخی الگوریتمها نسبت به بزرگی ویژگیها حساس باشند.
روشهای رایج مقیاسبندی شامل مقیاسبندی Min-Max و استانداردسازی (Z-score scaling) هستند.
مقیاسبندی Min-Max: مقیاسبندی Min-Max مقادیر را به یک بازه مشخص، معمولاً بین ۰ و ۱، بازتنظیم میکند. این روش توزیع اصلی را حفظ کرده و اطمینان میدهد که مقدار حداقل به ۰ و مقدار حداکثر به ۱ نقشهبرداری شود.
from sklearn.preprocessing import MinMaxScaler # initialising the MinMaxScaler scaler = MinMaxScaler(feature_range=(0, 1)) # Numerical columns num_col_ = [col for col in X.columns if X[col].dtype != 'object'] x1 = X # learning the statistical parameters for each of the data and transforming x1[num_col_] = scaler.fit_transform(x1[num_col_]) x1.head()
خروجی:
Pclass Sex Age SibSp Parch Fare Embarked ۰ ۱.۰ male 0.271174 0.125 0.0 0.014151 S ۱ ۰.۰ female 0.472229 0.125 0.0 0.139136 C ۲ ۱.۰ female 0.321438 0.000 0.0 0.015469 S ۳ ۰.۰ female 0.434531 0.125 0.0 0.103644 S ۴ ۱.۰ male 0.434531 0.000 0.0 0.015713 S
استانداردسازی (Z-score Scaling)
استانداردسازی شامل تبدیل مقادیر به طوری است که میانگین دادهها برابر با ۰ و انحراف معیار برابر با ۱ شود. این روش دادهها را حول میانگین متمرکز کرده و آنها را بر اساس انحراف معیار مقیاسبندی میکند. استانداردسازی دادهها را برای الگوریتمهایی که فرض میکنند دادهها توزیع گاوسی دارند یا نیاز دارند ویژگیها میانگین صفر و واریانس واحد داشته باشند، مناسبتر میسازد.
Z = (X - μ) / σ
که در آن X همان داده، μ میانه و σ انحراف معیار است.
ابزارهای پاکسازی داده
برخی از ابزارهای پاکسازی داده عبارتند از:
- OpenRefine
- Trifacta Wrangler
- TIBCO Clarity
- Cloudingo
- IBM Infosphere Quality Stage
مزایای پاکسازی داده در یادگیری ماشین
- بهبود عملکرد مدل: حذف خطاها، ناسازگاریها و دادههای نامربوط، به مدل کمک میکند تا بهتر از دادهها یاد بگیرد.
- دقت بیشتر: کمک میکند تا اطمینان حاصل شود که دادهها دقیق، سازگار و بدون خطا هستند.
- نمایش بهتر دادهها: پاکسازی دادهها امکان تبدیل دادهها به فرمتی را فراهم میکند که روابط و الگوهای زیرساختی دادهها را بهتر نمایان میسازد.
- بهبود کیفیت دادهها: کیفیت دادهها بهبود مییابد و آن را قابلاعتمادتر و دقیقتر میکند.
- بهبود امنیت دادهها: کمک میکند تا اطلاعات حساس یا محرمانه شناسایی و حذف شوند تا امنیت دادهها حفظ شود.
معایب پاکسازی داده در یادگیری ماشین
- زمانبر بودن: فرآیندی زمانبر، بهویژه برای مجموعه دادههای بزرگ و پیچیده.
- مستعد خطا: پاکسازی داده میتواند مستعد خطا باشد، زیرا شامل تبدیل و تمیز کردن دادهها است که ممکن است منجر به از دست دادن اطلاعات مهم یا ایجاد خطاهای جدید شود.
- هزینه و نیاز به منابع: فرآیندی منابعبر که نیاز به زمان، تلاش و تخصص قابلتوجه دارد. همچنین ممکن است نیاز به استفاده از ابزارهای نرمافزاری خاص باشد که میتواند به هزینه و پیچیدگی فرآیند پاکسازی داده بیفزاید.
- مساویسازی Overfitting: پاکسازی دادهها ممکن است به طور غیرمستقیم به مساویسازی بیش از حد کمک کند، به ویژه اگر دادههای زیادی حذف شوند.
نتیجهگیری
ما در اینجا چهار مرحله مختلف پاکسازی داده را بررسی کردیم تا دادهها قابلاعتمادتر شده و نتایج بهتری تولید کنیم. پس از تکمیل صحیح مراحل پاکسازی داده، یک مجموعه داده قوی خواهیم داشت که از بسیاری از مشکلات رایج جلوگیری میکند. به طور خلاصه، پاکسازی داده یک مرحله حیاتی در فرآیند علم داده است که شامل شناسایی و اصلاح خطاها، ناسازگاریها و نواقص دادهها برای بهبود کیفیت و قابلیت استفاده آن است.