آموزش‌های پیشرفته هوش مصنوعی

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

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

5 دقیقه مطالعه
  • پشتیبانی شبکه
  • کنیم
  • Scaler
  • مقدار
  • می‌کنیم
  • انجام
  • تابع
  • استفاده
نرمال سازی داده به کمک کتابخانه scikit-learn | نرمال سازی داده ها در پایتون

خلاصه تحلیلی خبر

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

موضوعات اصلی: پشتیبانی شبکه، کنیم، Scaler، مقدار، می‌کنیم، انجام

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

در روش مقیاس‌بندی ویژگی تمامی مقادیر موجود در یک ستون به اعدادی بین 0 و یک تبدیل می‌شود. برای محاسبه مقدار جدید، مقدار کنونی را بر مقدار بیشینه (بزرگ‌ترین) ستون تقسیم می‌کنیم. برای انجام این کار می‌توانیم از کلاس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], [0.000000e+00], [1.000000e+00], ..., [5.507300e+05], [6.654400e+04], [3.643743e+06]])

کمینه بیشینه

در این متد نیز همانند مقیاس‌بندی ویژگی، تمامی مقادیر یک ستون به اعدادی بین 0 و 1 تبدیل می‌شوند. اینگونه که برای محاسبه مقدار جدید، مقدار کمینه را از مقدار کنونی کم می‌کنیم و سپس مقدار به دست آمده را بر دامنه مقادیر موجود در ستون تقسیم می‌کنیم. در کتابخانه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 تمامی مقادیر موجود در یک ستون را به عددی در حدود 0 تبدیل می‌کند. اعداد حاصل از روش نمره z اغلب بین 3- و 3 هستند. در این روش برای محاسبه مقدار جدید، مقدار میانگین از مقدار کنونی کم می‌شود و مقدار حاصل بر انحراف معیار تقسیم می‌شود. در کتابخانه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می‌توانید داده‌های اصلی را بازیابی کنید.

برای ارزیابی پایداری، امنیت و نگهداری این زیرساخت، راهنمای پشتیبانی شبکه را نیز مطالعه کنید.