پاکسازی داده Data Cleaning در پایتون – راهنمای جامع ۱۰۰%

پاکسازی داده Data Cleaning

پاکسازی داده «Data Cleaning» یکی از بخش‌های مهم در یادگیری ماشین «Machine Learning» است که نقش قابل‌توجهی در ساخت مدل ایفا می‌کند. در این مقاله، پاکسازی داده، اهمیت آن و پیاده‌سازی آن با زبان برنامه‌نویسی پایتون را بررسی خواهیم کرد.

پاکسازی داده چیست؟

پاکسازی داده مرحله‌ای مهم و حیاتی در یادگیری ماشین (ML) است که شامل شناسایی و حذف داده‌های ناقص، تکراری یا نامربوط می‌شود. هدف از پاکسازی داده این است که داده‌ها دقیق، سازگار و عاری از خطا باشند، چرا که داده‌های نادرست یا ناسازگار می‌توانند عملکرد مدل یادگیری ماشین را تحت تأثیر منفی قرار دهند. دانشمندان داده معمولاً بخش بزرگی از زمان خود را صرف این مرحله می‌کنند، چرا که باور دارند «داده بهتر از الگوریتم‌ها عمل می‌کند.»

پاک‌سازی داده، که با نام پیش‌پردازش داده «Data Preprocessing» نیز شناخته می‌شود، مرحله‌ای ضروری در علوم داده «Data Science» است که شامل شناسایی و اصلاح یا حذف خطاها، ناسازگاری‌ها و نواقص در داده‌ها می‌شود تا کیفیت و قابلیت استفاده از آن بهبود یابد. این مرحله اهمیت زیادی دارد، زیرا داده خام معمولاً پر از نویز «noisy»، ناقص «incomplete»، و ناسازگار «inconsistent» هستند که می‌تواند دقت «accuracy» و اعتبار «reliability» نتایج حاصل را تحت تأثیر قرار دهد.

چرا پاکسازی داده مهم است؟

پاکسازی داده مرحله‌ای کلیدی در فرآیند آماده‌سازی داده‌ها است که نقشی اساسی در تضمین دقت، قابلیت اطمینان «reliability» و کیفیت کلی «overall quality» یک مجموعه داده «DataSet» ایفا می‌کند.

تصویر نمادین از پاکسازی داده

در تصمیم‌گیری، صحت نتیجه‌گیری‌ها به‌شدت به پاک بودن داده‌های پایه وابسته است. بدون پاک‌سازی مناسب داده‌ها، نواقص، نقاط پرت، مقادیر گمشده و ناسازگاری‌ها می‌توانند اعتبار نتایج تحلیلی را زیر سؤال ببرند. علاوه بر این، داده‌های تمیز مدل‌سازی و شناسایی الگوها را مؤثرتر می‌کند، زیرا الگوریتم‌ها زمانی که با داده‌های باکیفیت و بدون خطا تغذیه شوند، عملکرد بهتری دارند.

همچنین، مجموعه داده‌های تمیز تفسیرپذیری یافته‌ها را بهبود می‌بخشند و به فرمول‌بندی مدل‌ها کمک می‌کنند.

پاکسازی داده در علم داده

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

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

مراحل انجام پاکسازی داده

پاک‌سازی داده شامل یک فرآیند سیستماتیک برای شناسایی و اصلاح خطاها، ناسازگاری‌ها و نواقص موجود در یک مجموعه داده است. مراحل اصلی برای انجام پاکسازی داده به شرح زیر است:

مراحل انجام پاکسازی داده
مراحل پاکسازی داده
  • حذف مشاهدات ناخواسته: شناسایی و حذف مشاهدات نامربوط یا زائد از مجموعه داده. این مرحله شامل بررسی داده‌ها برای یافتن رکوردهای تکراری، اطلاعات نامرتبط، یا نقاط داده‌ای است که تأثیر معناداری در تحلیل ندارند. حذف مشاهدات ناخواسته، مجموعه داده را بهینه کرده، نویز را کاهش داده و کیفیت کلی آن را بهبود می‌بخشد.
  • رفع خطاهای ساختاری: پرداختن به مشکلات ساختاری در مجموعه داده، مانند ناسازگاری در قالب داده‌ها، قراردادهای نام‌گذاری، یا انواع متغیرها. قالب‌ها را استاندارد کنید، اختلافات نام‌گذاری را اصلاح کنید و از یکنواختی در نمایش داده‌ها اطمینان حاصل کنید. رفع خطاهای ساختاری باعث بهبود سازگاری داده‌ها و تسهیل تحلیل و تفسیر دقیق می‌شود.
  • مدیریت نقاط پرت ناخواسته: شناسایی و مدیریت نقاط پرت که به طور قابل‌توجهی از سایر داده‌ها فاصله دارند. بسته به زمینه، تصمیم بگیرید که آیا باید نقاط پرت را حذف کرد یا آن‌ها را تغییر داد تا تأثیرشان بر تحلیل کاهش یابد. مدیریت نقاط پرت برای دستیابی به بینش‌های دقیق‌تر و قابل‌اعتمادتر از داده‌ها ضروری است.
  • مدیریت داده‌های گمشده: ایجاد استراتژی‌هایی برای مدیریت مؤثر داده‌های گمشده. این استراتژی‌ها ممکن است شامل تخمین مقادیر گمشده با استفاده از روش‌های آماری، حذف رکوردهایی با مقادیر گمشده، یا استفاده از تکنیک‌های پیشرفته تخمین باشد. مدیریت داده‌های گمشده یک مجموعه داده کامل‌تر ایجاد می‌کند، از ایجاد سوگیری جلوگیری کرده و یکپارچگی تحلیل‌ها را حفظ می‌کند.

چگونه پاکسازی داده را انجام دهیم؟

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

تصویری نمادین از پاکسازی داده

  • مدیریت مقادیر گمشده: تصمیم‌گیری‌های استراتژیک درباره جایگزینی (تخمین) یا حذف داده‌های گمشده انجام می‌شود.
  • حذف داده‌های تکراری: داده‌های تکراری به طور سیستماتیک حذف می‌شوند تا از ایجاد افزونگی جلوگیری شود.
  • مدیریت نقاط پرت: اطمینان حاصل می‌شود که مقادیر افراطی تأثیر نامناسبی بر تحلیل نداشته باشند.
  • رفع خطاهای ساختاری: قالب‌ها و انواع متغیرها استانداردسازی شده و ناسازگاری‌ها برطرف می‌شوند تا سازگاری داده‌ها افزایش یابد.

در تمام مراحل، مستندسازی تغییرات برای شفافیت و قابلیت بازتولید بسیار مهم است. اعتبارسنجی و آزمایش مکرر، اثربخشی مراحل پاک‌سازی داده را تأیید می‌کند. در نهایت، یک مجموعه داده پالایش‌شده آماده برای تحلیل‌های معنادار و استخراج بینش‌های کاربردی خواهد بود.

پیاده سازی پاکسازی داده در پایتون

برای درک بهتر مراحل پاک‌سازی داده‌ها، از مجموعه داده Titanic (لینک +) استفاده می‌کنیم. مراحل اصلی عبارتند از:

  1. وارد کردن کتابخانه‌های ضروری
    • ابتدا کتابخانه‌های موردنیاز را برای تحلیل داده‌ها وارد می‌کنیم.
  2. بارگذاری دیتاست
    • دیتاست Titanic را بارگذاری می‌کنیم (فایل به‌صورت CSV است، از تابع read_csv استفاده می‌کنیم).
  3. بررسی اطلاعات داده‌ها با ()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()

خروجی:

خروجی نمودار جعبه ای
نمودار جعبه‌ای ستون Age (سن)

همانطور که از نمودار جعبه‌ای (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: پاک‌سازی داده‌ها ممکن است به طور غیرمستقیم به مساوی‌سازی بیش از حد کمک کند، به ویژه اگر داده‌های زیادی حذف شوند.

نتیجه‌گیری

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


سوالات متداول


Data Cleansing به چه معنی است؟

Data Cleansing یا پاک‌سازی داده‌ها شامل شناسایی و اصلاح خطاها، ناسازگاری‌ها و نواقص در یک مجموعه داده است تا کیفیت آن بهبود یابد و نتایج قابل اعتماد در تحلیل‌ها و تصمیم‌گیری‌ها حاصل شود.

منظور از شستشوی داده‌ها data wash چیست؟

شستشوی داده‌ها یا data wash یک اصطلاح استاندارد در مدیریت داده‌ها نیست. در صورتی که از این اصطلاح استفاده شود، ممکن است به معنای پاک‌سازی یا پردازش داده‌ها باشد، اما این اصطلاح در این حوزه مصطلح نیست.

چگونه داده‌ها پاک‌سازی می‌شوند؟

پاک‌سازی داده‌ها شامل مراحل مختلفی مانند حذف داده‌های تکراری، مدیریت مقادیر گمشده و اصلاح ناسازگاری‌ها است. این فرآیند نیاز به بررسی و اصلاح سیستماتیک مشکلات داده دارد.

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

در امنیت سایبری، پاک‌سازی داده‌ها شامل شناسایی و حذف کدهای مخرب یا نقاط دسترسی غیرمجاز از مجموعه‌های داده است تا اطلاعات حساس محافظت شده و تهدیدات سایبری پیشگیری شود.

چگونه با استفاده از SQL داده‌ها را پاک‌سازی کنیم؟

برای پاک‌سازی داده‌ها در SQL می‌توان از دستورات DELETE برای حذف رکوردهای تکراری، UPDATE برای اصلاح مقادیر و ALTER TABLE برای تغییر ساختار داده‌ها استفاده کرد. از عبارات WHERE برای هدف‌گذاری رکوردهای خاص در فرآیند پاک‌سازی استفاده می‌شود.

میزان رضایتمندی
لطفاً میزان رضایت خودتان را از این مطلب با دادن امتیاز اعلام کنید.
[ امتیاز میانگین 0 از 0 نفر ]
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع و مراجع:
geeksforgeeks techtarget مجله پی استور datascientest w3schools tableau betterevaluation

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *



برچسب‌ها:
یادگیری ماشین


پیمایش به بالا