40 گام به سوی آینده‌ای هوشمند - مجموعه وبینارهای رایگان در حوزه هوش مصنوعی
Filter by دسته‌ها
chatGTP
آموزش هوش مصنوعی و انواع آن
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
پایتون و ابزارهای یادگیری عمیق
کتابخانه‌ های یادگیری عمیق
یادگیری با نظارت
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
اخبار
تیتر یک
رسانه‌ها
آموزش پردازش زبان طبیعی
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
رویدادها
کاربردهای هوش مصنوعی
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
 نرمال سازی داده به کمک کتابخانه scikit-learn

نرمال سازی داده به کمک کتابخانه scikit-learn

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

نرمال سازی داده

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

  • مقیاس‌بندی ویژگی Single feature scaling
  • کمینه بیشینه Min max
  • نمره Z-score z
  • مقیاس‌بندی لگاریتمی Log scaling
  • کوتاه‌سازی Clipping

در مقاله آموزشی پیش‌رو برای انجام عملیات نرمال سازی داده از کتابخانه scikit-learn  استفاده می‌کنیم. برای انجام این پروژه از همان دیتاست قبلی استفاده می‌کنیم تا بتوانیم نتایج را با یکدیگر مقایسه کنیم. البته با استفاده از این دو متد به نتایج یکسانی دست پیدا خواهیم کرد.

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

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

تمامی عملیات‌های scikit-learn  که در این مقاله آموزشی توضیح خواهیم داد، طبق مراحل زیر عمل می‌کنند:

  • انتخاب متد پیش‌پردازش
  • برازش آن بر روی تابع ()fit
  • اجرای آن بر روی داده‌ها با استفاده از تابع ()transform

کتابخانه scikit-learn  فقط با آرایه‌ها کار می‌کند و به همین دلیل در زمان اجرای هر یک از این عملیات‌ها باید ستون دیتافریم را به یک آرایه تبدیل کنیم. برای انجام این کار می‌توانیم از تابع ()numpy.array  استفاده کنیم که ورودی آن ستون‌های دیتافریم است. ورودی تابع ()fit  آرایه‌ای از آرایه‌ها است و هر کدام از این آرایه‌ها نماینده نمونه‌ای از دیتاست است. برای تبدیل یک آرایه استاندارد به آرایه‌ای از آرایه‌ها می‌توانیم از تابع ()reshape  استفاده کنیم.

بارگذاری داده‌ها

برای انجام پروژه حاضر از دیتاست ارائه شده از سوی نهاد Protexione Civile (واقع در ایتالیا) استفاده می‌کنیم؛ این دیتاست شامل آمار مبتلایان به ویروس کووید ۱۹ ( از زمان شیوع این ویروس تا به امروز) است. این دیتاست روزانه به‌روز رسانی می‌شود.

ابتدا باید کتابخانه pandas  را بارگذاری کنیم و دیتاست را به کمک تابع ()read_csv  بخوانیم. در گام بعدی باید تمامی ستون‌های حاوی مقادیر NaN را حذف کنیم. برای این منظور می‌توانیم از تابع ()dropna استفاده کنیم.

import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/pcm-dpc/COVID-
۱۹/master/dati-regioni/dpc-covid19-ita-regioni.csv')
df.dropna(axis=1,inplace=True)
df.head(10)
بارگذاری داده‌ها

مقیاس‌بندی ویژگی

در روش مقیاس‌بندی ویژگی تمامی مقادیر موجود در یک ستون به اعدادی بین ۰ و یک تبدیل می‌شود. برای محاسبه مقدار جدید، مقدار کنونی را بر مقدار بیشینه (بزرگ‌ترین) ستون تقسیم می‌کنیم. برای انجام این کار می‌توانیم از کلاس MaxAbsScaler استفاده کنیم. مقیاس‌بند (Scaler) را بر روی ستون tamponi اعمال می‌کنیم چرا که باید به یک آرایه تبدیل شود و تغییر شکل دهد.

import numpy as np
from sklearn.preprocessing import MaxAbsScaler
X = np.array(df['tamponi']).reshape(-1,1)
scaler = MaxAbsScaler()

در این مرحله می‌توانیم مقیاس‌بند را fit کرده و عملیات transformation را انجام دهیم. با اجرای تابع ()reshape ، مقیاس‌بند را به شکل اصلی تغییر می‌دهیم و نتیجه به دست آمده را در یک ستون جدید از دیتافریم df ذخیره می‌کنیم.

scaler.fit(X)
X_scaled = scaler.transform(X)
df['single feature scaling'] = X_scaled.reshape(1,-1)[0]

در ضمن کتابخانه‌ scikit-learn  تابعی دارد که از طریق آن می‌توانیم مقادیر اصلی را، با توجه به تغییراتی که در داده حاصل شده،  بازیابی کنیم. این تابع در عملیات تغییرشکل که در ادامه مقاله به آن خواهیم پرداخت نیز کاربرد دارد.

scaler.inverse_transform(X_scaled)

و خروجی آن بدین شکل است:

array([[5.000000e+00],
       [۰.۰۰۰۰۰۰e+00],
       [۱.۰۰۰۰۰۰e+00],
       ...,
       [۵.۵۰۷۳۰۰e+05],
       [۶.۶۵۴۴۰۰e+04],
       [۳.۶۴۳۷۴۳e+06]])

کمینه بیشینه

در این متد نیز همانند مقیاس‌بندی ویژگی، تمامی مقادیر یک ستون به اعدادی بین ۰ و ۱ تبدیل می‌شوند. اینگونه که برای محاسبه مقدار جدید، مقدار کمینه  را از مقدار کنونی کم می‌کنیم و سپس مقدار به دست آمده را بر دامنه مقادیر موجود در ستون تقسیم می‌کنیم. در کتابخانه scikit-learn  برای انجام این عملیات ریاضی از کلاس MinMaxScaler  استفاده می‌کنیم. برای مثال می‌توانیم این روش را بر روی ستون totale_casi  اعمال و اجرا کنیم.

from sklearn.preprocessing import MinMaxScaler
X = np.array(df['totale_casi']).reshape(-1,1)
scaler = MinMaxScaler()
scaler.fit(X)
X_scaled = scaler.transform(X)
df['min max'] = X_scaled.reshape(1,-1)[0]

نمره z

نمره z تمامی مقادیر موجود در یک ستون را به عددی در حدود ۰ تبدیل می‌کند. اعداد حاصل از روش نمره z اغلب بین ۳- و ۳ هستند. در این روش برای محاسبه مقدار جدید، مقدار میانگین از مقدار کنونی کم می‌شود و مقدار حاصل بر انحراف معیار تقسیم می‌شود. در کتابخانه scikit-learn  برای انجام این عملیات ریاضی می‌توانیم از تابع StandardScaler  استفاده کنیم. برای مثال فرض کنید می‌خواهیم نمره z ستون deceduti را محاسبه کنیم:

from sklearn.preprocessing import StandardScaler
X = np.array(df['deceduti']).reshape(-1,1)
scaler = StandardScaler()
scaler.fit(X)
X_scaled = scaler.transform(X)
df['z score'] = X_scaled.reshape(1,-1)[0]

جمع بندی

در این مقاله به شما نشان دادیم که چگونه می‌توان با استفاده از پکیج preprocessing کتابخانه scikit-learn ، یک دیتاست را نرمال سازی کنیم. اگر تصمیم دارید عملیات نرمال سازی داده را به صورت دستی انجام دهید، می‌توانید از فرمول‌هایی که در مقاله‌های قبلی ارائه شده، استفاده کنید.

از جمله مزایای استفاده از کتابخانه scikit-learn  می‌توان به موارد زیر اشاره کرد:

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

میانگین امتیاز / ۵. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
[wpforms id="48325"]