پیش‌ پردازش داده‌ ها در پایتون

بفرست برای دوستت
Telegram
WhatsApp
پیش پردازش داده ها در پایتون | دیتا یاد

فهرست مطالب

در درس دهم از آموزش رایگان یادگیری ماشین با پایتون در سایت دیتایاد می خواهیم در مورد پیش پردازش داده ها در پایتون صحبت کنیم.

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

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

 

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

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

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

 

چرا نیاز به پیش‌ پردازش داریم؟

✓ برای دستیابی به نتایج بهتر در پروژه‌های یادگیری ماشین، به شکل و ساختار مناسبی از داده‌ها احتیاج داریم. برخی مدل‌ها نیاز به داده‌هایی با قالب خاص دارند. مثلاً الگوریتم جنگل تصادفی با مقادیر خالی سازگار نیست.

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

  پیاده‌ سازی رگرسیون چندجمله‌ ای با Turicreate

 

مراحل پیش‌ پردازش داده‌ ها در پایتون

مرحله اول: کتابخانه‌های مورد نیاز را وارد کنید.

 

# importing libraries
import pandas as pd
import scipy
import numpy as np
from sklearn.preprocessing import MinMaxScaler
import seaborn as sns
import matplotlib.pyplot as plt

 

مرحله دوم: داده‌ها را از این لینک بارگیری کنید.

 

# Load the dataset
df = pd.read_csv('Geeksforgeeks/Data/diabetes.csv')
print(df.head())

 

 

بررسی داده ها

 

df.info()

 

 

بعد از بررسی داده‌ها، متوجه می‌شویم که ۹ ستون داریم و هر ستون ۷۶۸ مقدار است. خوشبختانه، هیچ مقدار خالی‌ای در داده‌ها نیست. البته، با استفاده از دستور ()df.isnull می‌توانیم این موضوع را بررسی کنیم.

 

df.isnull().sum()

 

 

مرحله سوم: تجزیه و تحلیل آماری

با استفاده از دستور df.describe()، نمای کلی ای از داده‌ها می‌گیریم.

 

df.describe()

 

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

 

مرحله چهارم: بررسی مقدار پرت

 

# Box Plots
fig, axs = plt.subplots(9,1,dpi=95, figsize=(7,17))
i = 0
for col in df.columns:
	axs[i].boxplot(df[col], vert=False)
	axs[i].set_ylabel(col)
	i+=1
plt.show()

 

 

نمودارها نشان‌دهنده این هستند که تقریباً هر ستونی مقدار پرتی دارد، پس باید آن‌ها را حذف کنیم.

  کاربرد بیز ساده چند جمله‌ای در مسائل پردازش زبان طبیعی (NLP)

✓ رهاسازی مقدار پرت

 

# Identify the quartiles
q1, q3 = np.percentile(df['Insulin'], [25, 75])
# Calculate the interquartile range
iqr = q3 - q1
# Calculate the lower and upper bounds
lower_bound = q1 - (1.5 * iqr)
upper_bound = q3 + (1.5 * iqr)
# Drop the outliers
clean_data = df[(df['Insulin'] >= lower_bound) 
				& (df['Insulin'] <= upper_bound)]


# Identify the quartiles
q1, q3 = np.percentile(clean_data['Pregnancies'], [25, 75])
# Calculate the interquartile range
iqr = q3 - q1
# Calculate the lower and upper bounds
lower_bound = q1 - (1.5 * iqr)
upper_bound = q3 + (1.5 * iqr)
# Drop the outliers
clean_data = clean_data[(clean_data['Pregnancies'] >= lower_bound) 
						& (clean_data['Pregnancies'] <= upper_bound)]


# Identify the quartiles
q1, q3 = np.percentile(clean_data['Age'], [25, 75])
# Calculate the interquartile range
iqr = q3 - q1
# Calculate the lower and upper bounds
lower_bound = q1 - (1.5 * iqr)
upper_bound = q3 + (1.5 * iqr)
# Drop the outliers
clean_data = clean_data[(clean_data['Age'] >= lower_bound) 
						& (clean_data['Age'] <= upper_bound)]


# Identify the quartiles
q1, q3 = np.percentile(clean_data['Glucose'], [25, 75])
# Calculate the interquartile range
iqr = q3 - q1
# Calculate the lower and upper bounds
lower_bound = q1 - (1.5 * iqr)
upper_bound = q3 + (1.5 * iqr)
# Drop the outliers
clean_data = clean_data[(clean_data['Glucose'] >= lower_bound) 
						& (clean_data['Glucose'] <= upper_bound)]


# Identify the quartiles
q1, q3 = np.percentile(clean_data['BloodPressure'], [25, 75])
# Calculate the interquartile range
iqr = q3 - q1
# Calculate the lower and upper bounds
lower_bound = q1 - (0.75 * iqr)
upper_bound = q3 + (0.75 * iqr)
# Drop the outliers
clean_data = clean_data[(clean_data['BloodPressure'] >= lower_bound) 
						& (clean_data['BloodPressure'] <= upper_bound)]


# Identify the quartiles
q1, q3 = np.percentile(clean_data['BMI'], [25, 75])
# Calculate the interquartile range
iqr = q3 - q1
# Calculate the lower and upper bounds
lower_bound = q1 - (1.5 * iqr)
upper_bound = q3 + (1.5 * iqr)
# Drop the outliers
clean_data = clean_data[(clean_data['BMI'] >= lower_bound) 
						& (clean_data['BMI'] <= upper_bound)]


# Identify the quartiles
q1, q3 = np.percentile(clean_data['DiabetesPedigreeFunction'], [25, 75])
# Calculate the interquartile range
iqr = q3 - q1
# Calculate the lower and upper bounds
lower_bound = q1 - (1.5 * iqr)
upper_bound = q3 + (1.5 * iqr)

# Drop the outliers
clean_data = clean_data[(clean_data['DiabetesPedigreeFunction'] >= lower_bound) 
						& (clean_data['DiabetesPedigreeFunction'] <= upper_bound)]

 

  ایجاد SVM با کرنل خطی در پایتون

مرحله پنجم: بررسی وابستگی بین داده‌ها

 

#correlation
corr = df.corr()

plt.figure(dpi=130)
sns.heatmap(df.corr(), annot=True, fmt= '.2f')
plt.show()

 

 

مرحله ششم: ویژگی‌ها و هدف‌های مستقل را از هم جدا کنیم.

 

# separate array into input and output components
X = df.drop(columns =['Outcome'])
Y = df.Outcome

 

مرحله هفتم: داده‌ها را نرمال یا استاندارد کنیم.

برای نرمال‌سازی، MinMaxScaler را استفاده می‌کنیم تا هر ویژگی در بازه‌ی [0،1] قرار بگیرد. این روش برای ویژگی‌هایی با مقیاس‌های متفاوت و در الگوریتم‌هایی مانند k-NN یا شبکه‌های عصبی مناسب است.

 

# initialising the MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1))

# learning the statistical parameters for each of the data and transforming
rescaledX = scaler.fit_transform(X)
rescaledX[:5]

 

 

برای استانداردسازی، از کلاس StandardScaler در scikit-learn استفاده می‌کنیم. این روش وقتی مناسب است که ویژگی‌ها توزیع نرمال دارند یا الگوریتم حساس به مقیاس ویژگی‌ها نیست.

 

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler().fit(X)
rescaledX = scaler.transform(X)
rescaledX[:5]

 

 

 

Rating 4.90 from 10 votes

لیست دروس دوره

آموزش پیشنهادی و مکمل

اگر سوالی در مورد این درس دارید، در کادر زیر بنویسید.

guest
1 دیدگاه
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
ملیکا اشرفی
ملیکا اشرفی
3 ماه قبل

ممنون از توضیحات کامل شما

سبد خرید

دوره جامع متخصص علم داده و یادگیری ماشین

برای دیدن نوشته هایی که دنبال آن هستید تایپ کنید.
×