مروری بر پاکسازی دادهها در یادگیری ماشین
در این بخش، مراحل مختلف پاکسازی دادهها (Data Cleaning) برای بهبود کیفیت دادهها و تولید نتایج بهتر توضیح داده شده است. پس از انجام صحیح مراحل پاکسازی دادهها، یک مجموعه داده قوی خواهیم داشت که از هرگونه خطا و ناسازگاری جلوگیری میکند. در خلاصه، پاکسازی دادهها یک گام حیاتی در خط لوله علم داده است که شامل شناسایی و اصلاح خطاها، ناسازگاریها و نادرستیها در دادهها برای بهبود کیفیت و قابلیت استفاده آنها میشود.
مرور کلی پاکسازی دادهها – سوالات متداول
پاکسازی دادهها به چه معناست؟
- پاکسازی دادهها شامل شناسایی و اصلاح خطاها، ناسازگاریها و نادرستیها در یک مجموعه داده برای بهبود کیفیت آن است تا اطمینان حاصل شود که نتایج تحلیلها و تصمیمگیریها قابل اعتماد هستند.
یک مثال از پاکسازی دادهها چیست؟
- حذف رکوردهای تکراری در یک پایگاه داده مشتریان، اطمینان از تحلیل دقیق و بدون سوگیری را فراهم میکند و از این که اطلاعات تکراری نتایج را تحریف کنند یا پایگاه مشتریان را به اشتباه نشان دهند، جلوگیری میکند.
معنی “شستشوی دادهها” چیست؟
- “شستشوی دادهها” یک اصطلاح استاندارد در مدیریت دادهها نیست. اگر استفاده شود، ممکن است به تمیز کردن یا پردازش دادهها اشاره کند، اما یک اصطلاح گستردهشناختهشده در این زمینه نیست.
پاکسازی دادهها چگونه انجام میشود؟
- پاکسازی دادهها شامل مراحلی مانند حذف موارد تکراری، مدیریت مقادیر缺失 و اصلاح ناسازگاریها است. این کار نیاز به بررسی سیستماتیک و اصلاح مسائل دادهها دارد.
پاکسازی دادهها در امنیت سایبری چیست؟
- در امنیت سایبری، پاکسازی دادهها شامل شناسایی و حذف کدهای مخرب یا نقاط دسترسی غیرمجاز از مجموعه دادهها برای محافظت از اطلاعات حساس و جلوگیری از تهدیدات سایبری است.
چگونه دادهها را با استفاده از SQL تمیز کنیم؟
- از دستورات SQL مانند DELETE برای حذف موارد تکراری، UPDATE برای اصلاح مقادیر و ALTER TABLE برای تغییر ساختار دادهها استفاده کنید. از بند WHERE برای هدف قرار دادن رکوردهای خاص برای تمیز کردن استفاده کنید.
مراحل پاکسازی دادهها در کد:
- شناسایی ستونهای دستهای و عددی:
pythonCopy
# 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)
خروجی:
CopyCategorical columns : ['Name', 'Sex', 'Ticket', 'Cabin', 'Embarked'] Numerical columns : ['PassengerId', 'Survived', 'Pclass', 'Age', 'SibSp', 'Parch', 'Fare']
- بررسی تعداد مقادیر منحصر به فرد در ستونهای دستهای:
pythonCopy
df[cat_col].nunique()
خروجی:
CopyName 891 Sex 2 Ticket 681 Cabin 147 Embarked 3 dtype: int64
- حذف ستونهای نامرتبط (Name و Ticket):
pythonCopy
df1 = df.drop(columns=['Name', 'Ticket']) df1.shape
خروجی:
Copy(891, 10)
- مدیریت دادههای缺失:
pythonCopy
round((df1.isnull().sum() / df1.shape[0]) * 100, 2)
خروجی:
CopyPassengerId 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 و سطرهای缺失 در ستون Embarked:
pythonCopy
df2 = df1.drop(columns='Cabin') df2.dropna(subset=['Embarked'], axis=0, inplace=True) df2.shape
خروجی:
Copy(889, 9)
- پر کردن مقادیر缺失 در ستون Age با میانگین:
pythonCopy
df3 = df2.fillna(df2.Age.mean()) df3.isnull().sum()
خروجی:
CopyPassengerId 0 Survived 0 Pclass 0 Sex 0 Age 0 SibSp 0 Parch 0 Fare 0 Embarked 0 dtype: int64
- مدیریت دادههای پرت (Outliers) در ستون Age:
pythonCopy
import matplotlib.pyplot as plt plt.boxplot(df3['Age'], vert=False) plt.ylabel('Variable') plt.xlabel('Age') plt.title('Box Plot') plt.show()
خروجی:
- حذف دادههای پرت:
pythonCopy
# 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)]
خروجی:
CopyLower Bound : 3.705400107925648 Upper Bound : 55.578785285332785
- تبدیل دادهها (Scaling و Normalization):
pythonCopy
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()
خروجی:
CopyPclass Sex Age SibSp Parch Fare Embarked 0 1.0 male 0.271174 0.125 0.0 0.014151 S 1 0.0 female 0.472229 0.125 0.0 0.139136 C 2 1.0 female 0.321438 0.000 0.0 0.015469 S 3 0.0 female 0.434531 0.125 0.0 0.103644 S 4 1.0 male 0.434531 0.000 0.0 0.015713 S
ابزارهای پاکسازی دادهها:
- OpenRefine: یک ابزار قدرتمند متنباز برای تمیز کردن و تبدیل دادههای نامرتب.
- Trifacta Wrangler: یک ابزار کاربرپسند برای تمیز کردن، تبدیل و آمادهسازی دادهها برای تحلیل.
- TIBCO Clarity: ابزاری برای پروفایلکردن، استانداردسازی و غنیسازی دادهها.
- Cloudingo: یک ابزار مبتنی بر ابر برای حذف دادههای تکراری و مدیریت رکوردها.
- IBM Infosphere Quality Stage: مناسب برای دادههای بزرگ و پیچیده.
مزایا و معایب پاکسازی دادهها در یادگیری ماشین:
مزایا:
- بهبود عملکرد مدل
- افزایش دقت
- نمایش بهتر دادهها
- بهبود کیفیت دادهها
- بهبود امنیت دادهها
معایب:
- زمانبر بودن
- مستعد خطا بودن
- هزینهبر و نیازمند منابع زیاد
- خطر بیشبرازش (Overfitting)
با انجام این مراحل، دادههای شما برای تحلیل و مدلسازی آماده خواهند بود.
دیدگاهتان را بنویسید