هوش مصنوعی با برنامه نویسی پایتون، آماده ‌سازی داده ها

3 سال پیش

هوش مصنوعی با برنامه نویسی پایتون، آماده ‌سازی داده ها

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

ما قبلاً الگوریتم های یادگیری ماشین تحت نظارت و همچنین بدون نظارت را مطالعه کرده ایم. این الگوریتم ها برای شروع روند آموزش به داده های قالب بندی شده نیاز دارند. ما باید داده ها را به روشی خاص آماده یا قالب بندی کنیم تا بتواند آنها را به عنوان ورودی الگوریتم های ML تأمین کند.

 

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

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

پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون و جنگو

مراحل پیش پردازش داده ها

برای پیش پردازش داده ها در پایتون این مراحل را دنبال کنید:

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

import numpy as np
import sklearn.preprocessing

 

در اینجا ما از دو پکیج زیر استفاده کرده ایم:

  • NumPy – اساساً NumPy یک پکیج کلی پردازش آرایه است که برای دستکاری کارآمد آرایه های چند بعدی بزرگ از سوابق دلخواه و بدون از دست دادن سرعت زیاد برای آرایه های چند بعدی کوچک طراحی شده است.
  • Sklearn.preprocessing – این پکیج بسیاری از توابع متداول و کلاس های ترانسفورماتور را برای تغییر بردارهای ویژگی خام به نمایشی ارائه می دهد که برای الگوریتم های یادگیری ماشین مناسب تر است.

 

مرحله ۲ تعریف داده های نمونه – پس از وارد کردن پکیج ها، باید برخی از داده های نمونه را تعریف کنیم تا بتوانیم تکنیک های آماده سازی داده ها را روی آن داده ها اعمال کنیم. اکنون ما نمونه داده زیر را تعریف خواهیم کرد:

input_data = np.array([2.1, -1.9, 5.5],
                      [-۱٫۵, ۲٫۴, ۳٫۵],
                      [۰٫۵, -۷٫۹, ۵٫۶],
                      [۵٫۹, ۲٫۳, -۵٫۸])

 

مرحله ۳ – استفاده از تکنیک پیش پردازش – در این مرحله، ما باید از هر یک از تکنیک های پیش پردازش استفاده کنیم.

بخش زیر تکنیک های پیش پردازش داده را شرح می دهد.

 

تکنیک هایی برای پیش پردازش داده ها

تکنیک های پیش پردازش داده در زیر شرح داده شده است.

 

بایناریزاسیون

این روش پیش پردازش و آماده سازی داده ها است که در مواقعی که باید مقادیر عددی خود را به مقادیر Boolean تبدیل کنیم، استفاده می شود. ما می توانیم با استفاده از یک روش داخلی، داده های ورودی را با استفاده از ۰٫۵ به عنوان مقدار آستانه، به روش زیر مقداردهی کنیم:

data_binarized = preprocessing.Binarizer(threshold = 0.5).transform(input_data)
print("\nBinarized data:\n", data_binarized)

 

حال، پس از اجرای کد فوق، خروجی زیر را خواهیم گرفت، تمام مقادیر بالای ۰٫۵ (مقدار آستانه) به ۱ و تمام مقادیر زیر ۰٫۵ به ۰ تبدیل می شوند.

داده های باینریزه

[[ ۱٫ ۰٫ ۱٫]
[ ۰٫ ۱٫ ۱٫]
[ ۰٫ ۰٫ ۱٫]
[ ۱٫ ۱٫ ۰٫]]

 

حذف میانگین 

این یک روش بسیار  رایج در پیش پردازش داده ها است که در یادگیری ماشین استفاده می شود. اساساً از آن برای از بین بردن میانگین از بردار  استفاده می شود تا مرکز هر ویژگی بر صفر باشد. همچنین می توانیم بایاس را از ویژگی های موجود در بردار ویژگی (feature vector) حذف کنیم. برای استفاده از روش پیش پردازش حذف میانگین بر روی داده های نمونه، می توانیم کد پایتون نشان داده شده در زیر را بنویسیم. کد میانگین و انحراف معیار داده های ورودی را نشان می دهد:

print("Mean = ", input_data.mean(axis = 0))
print("Std deviation = ", input_data.std(axis = 0))

 

پس از اجرای کدهای فوق ، خروجی زیر را خواهیم گرفت –

 Mean = [ 1.75       -1.275       2.2]
Std deviation = [ 2.71431391  4.20022321  4.69414529]

 

اکنون، کد زیر میانگین و انحراف معیار داده های ورودی را حذف می کند –

data_scaled = preprocessing.scale(input_data)
print("Mean =", data_scaled.mean(axis=0))
print("Std deviation =", data_scaled.std(axis = 0))

 

پس از اجرای کدهای فوق ، خروجی زیر را خواهیم گرفت –

      Mean = [ 1.11022302e-16 0.00000000e+00 0.00000000e+00]
Std deviation = [ 1.             1.             1.]

مقیاس گذاری

این روش دیگری برای پیش پردازش داده است که برای مقیاس گذاری بردارهای ویژگی استفاده می شود. مقیاس گذاری بردارهای ویژگی لازم است زیرا مقادیر هر ویژگی می تواند بین بسیاری از مقادیر تصادفی متفاوت باشد. به عبارت دیگر می توان گفت مقیاس بندی از این جهت مهم است که نمی خواهیم هیچ ویژگی از نظر مصنوعی بزرگ یا کوچک باشد. با کمک کد پایتون زیر می توان مقیاس بندی داده های ورودی خود را انجام داد.

# حداقل و حداکثر مقیاس گذاری

data_scaler_minmax = preprocessing.MinMaxScaler(feature_range=(0,1))
data_scaled_minmax = data_scaler_minmax.fit_transform(input_data)
print ("\nMin max scaled data:\n", data_scaled_minmax)

پس از اجرای کدهای فوق، خروجی زیر را خواهیم گرفت –

# حداقل و حداکثر داده های مقیاس گذاری شده

[ [ ۰٫۴۸۶۴۸۶۴۹  ۰٫۵۸۲۵۲۴۲۷   ۰٫۹۹۱۲۲۸۰۷]
[   ۰٫          ۱٫           ۰٫۸۱۵۷۸۹۴۷]
[   ۰٫۲۷۰۲۷۰۲۷  ۰٫           ۱٫        ]
[   ۱٫          ۰٫ ۹۹۰۲۹۱۲۶  ۰٫        ]]

 

نرمال سازی

این یکی دیگر از روشهای آماده سازی داده ها است که برای اصلاح بردارهای ویژگی استفاده می شود. چنین نوعی اصلاح برای اندازه گیری بردارهای ویژگی در مقیاس مشترک لازم است. موارد زیر دو نوع نرمال سازی است که می تواند در یادگیری ماشین مورد استفاده قرار گیرد –

نرمال سازی L1

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

# Normalize data
data_normalized_l1 = preprocessing.normalize(input_data, norm = 'l1')
print("\nL1 normalized data:\n", data_normalized_l1)

 

پس از اجرای کدهای فوق، خروجی زیر را خواهیم گرفت –

L1 normalized data:
[[ ۰٫۲۲۱۰۵۲۶۳  -۰٫۲          ۰٫۵۷۸۹۴۷۳۷]
[ -۰٫۲۰۲۷۰۲۷    ۰٫۳۲۴۳۲۴۳۲   ۰٫۴۷۲۹۷۲۹۷]
[  ۰٫۰۳۵۷۱۴۲۹  -۰٫۵۶۴۲۸۵۷۱   ۰٫۴       ]
[  ۰٫۴۲۱۴۲۸۵۷   ۰٫۱۶۴۲۸۵۷۱  -۰٫۴۱۴۲۸۵۷۱]]

 

 عادی سازی L2

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

 

# Normalize data
data_normalized_l2 = preprocessing.normalize(input_data, norm = 'l2')
print("\nL2 normalized data:\n", data_normalized_l2)

 

پس از اجرای کدهای فوق، خروجی زیر را خواهیم گرفت –

L2 normalized data:
[[ ۰٫۳۳۹۴۶۱۱۴  -۰٫۳۰۷۱۳۱۵۱   ۰٫۸۸۹۰۶۴۸۹]
[ -۰٫۳۳۳۲۵۱۰۶   ۰٫۵۳۳۲۰۱۶۹   ۰٫۷۷۷۵۸۵۸ ]
[  ۰٫۰۵۱۵۶۵۵۸  -۰٫۸۱۴۷۳۶۱۲   ۰٫۵۷۷۵۳۴۴۶]
[  ۰٫۶۸۷۰۶۹۱۴   ۰٫۲۶۷۸۴۰۵۱  -۰٫۶۷۵۴۲۳۹ ]]

 

برچسب زدن به داده ها

ما  می دانیم که داده ها در یک قالب خاص برای الگوریتم های یادگیری ماشین ضروری هستند. نیاز مهم دیگر این است که داده ها باید قبل از ارسال به عنوان ورودی الگوریتم های یادگیری ماشین، به درستی برچسب گذاری یا لیبلینگ شوند. به عنوان مثال، اگر در مورد طبقه بندی صحبت کنیم، برچسب های زیادی روی داده ها وجود دارد. این برچسب ها به صورت کلمات، اعداد و غیره هستند. توابع مربوط به یادگیری ماشین در sklearn انتظار دارند که داده ها باید دارای برچسب اعداد باشند. از این رو، اگر داده ها به شکل دیگری باشد باید آنها را به عدد تبدیل کند. به این فرآیند تبدیل برچسب های کلمه به شکل عددی، رمزگذاری برچسب (label encoding) گفته می شود.

مراحل رمزگذاری برچسب

برای رمزگذاری برچسب های داده در پایتون این مراحل را دنبال کنید:

مرحله ۱ – وارد کردن پکیج های مفید

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

import numpy as np
from sklearn import preprocessing

 

مرحله ۲ – تعریف برچسب های نمونه

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

# Sample input labels
input_labels = ['red','black','red','green','black','yellow','white']

 

مرحله ۳ – ایجاد و آموزش شی رمزگذار برچسب

در این مرحله، ما باید رمزگذار برچسب را ایجاد کرده و آموزش دهیم. کد پایتون زیر در انجام این کار کمک می کند:

# Creating the label encoder
encoder = preprocessing.LabelEncoder()
encoder.fit(input_labels)

 

پس از اجرای کدهای فوق، خروجی زیر را خواهیم گرفت –

LabelEncoder()

 

مرحله ۴ – بررسی عملکرد با رمزگذاری لیست مرتب شده تصادفی

از این مرحله می توان برای بررسی عملکرد با رمزگذاری لیست مرتب شده تصادفی استفاده کرد. برای انجام همان کار می توان کد زیر را پایتون نوشت –

# encoding a set of labels
test_labels = ['green','red','black']
encoded_values = encoder.transform(test_labels)
print("\nLabels =", test_labels)

 

برچسب ها به شرح زیر چاپ می شوند –

Labels = ['green', 'red', 'black']

 

اکنون، می توانیم لیستی از مقادیر رمزگذاری شده را بدست آوریم، به عنوان مثال برچسب های کلمه به شماره های زیر تبدیل می شوند –

print("Encoded values =", list(encoded_values))

 

مقادیر رمزگذاری شده به شرح زیر چاپ می شوند –

Encoded values = [1, 2, 0]

 

مرحله ۵ – بررسی عملکرد با رمزگشایی مجموعه ای تصادفی از اعداد 

از این مرحله می توان با رمزگشایی مجموعه تصادفی اعداد، عملکرد را بررسی کرد. برای انجام همان کار می توان کد زیر را پایتون نوشت –

# decoding a set of values
encoded_values = [3,0,4,1]
decoded_list = encoder.inverse_transform(encoded_values)
print("\nEncoded values =", encoded_values)

 

اکنون ، مقادیر رمزگذاری شده به شرح زیر چاپ می شوند

Encoded values = [3, 0, 4, 1]
print("\nDecoded labels =", list(decoded_list))

 

اکنون، مقادیر رمزگشایی به شرح زیر چاپ می شوند –

Decoded labels = ['white', 'black', 'yellow', 'green']

 

داده‌های دارای برچسب در مقابل داده‌های بدون برچسب

داده های بدون برچسب عمدتاً از نمونه هایی از شی طبیعی یا انسان ساخته شده است که به راحتی می توان از جهان به دست آورد. آنها شامل: صوتی، تصویری، عکس، مقالات خبری و غیره هستند.

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

به عنوان مثال، اگر عکسی داشته باشیم، برچسب را می توان بر اساس محتوای عکس قرار داد، یعنی این عکس پسر یا دختر یا حیوان یا هر چیز دیگری است. برچسب زدن داده ها به تخصص یا قضاوت انسان در مورد داده های بدون برچسب نیاز دارد.

سناریوهای زیادی وجود دارد که در آنها داده های بدون برچسب فراوان هستند و به راحتی به دست می آیند اما داده های دارای برچسب اغلب به یک انسان / متخصص برای حاشیه نویسی نیاز دارند. یادگیری نیمه نظارت شده سعی در ترکیب داده های دارای برچسب و بدون برچسب برای ساخت مدل های بهتر دارد.

منبع.

 

لیست جلسات قبل آموزش هوش مصنوعی با برنامه نویسی پایتون

  1. آموزش هوش مصنوعی با برنامه نویسی پایتون – مفهوم کلی
  2. شروع آموزش هوش مصنوعی با برنامه نویسی پایتون
  3. یادگیری ماشین در هوش مصنوعی با برنامه نویسی پایتون

 

0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه