تولید دیتاست آزمایشی برای یادگیری ماشین در پایتون — ساده و کاربردی

دیتاست آزمایشی برای یادگیری ماشین در پایتون

هر زمان که به یادگیری ماشین فکر می‌کنیم، اولین چیزی که به ذهنمان می‌رسد، یک مجموعه داده «Dataset» است. اگرچه مجموعه داده‌های زیادی را می‌توانید در وب‌سایت‌هایی مانند Kaggle پیدا کنید، اما گاهی اوقات مفید است که خودتان داده‌ها را استخراج کرده و مجموعه داده‌ای ایجاد کنید. ایجاد مجموعه داده شخصی به شما کنترل بیشتری روی داده‌ها می‌دهد و امکان آموزش بهتر مدل یادگیری ماشین را فراهم می‌کند. در این مقاله، ما با استفاده از کتابخانه sklearn.datasets در زبان برنامه‌نویسی پایتون، مجموعه داده‌های تصادفی ایجاد خواهیم کرد.

تولید دیتاست آزمایشی برای یادگیری ماشین در پایتون

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

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

نمایی از دیتاست آزمایشی برای یادگیری ماشین

همچنین برای مسائل رگرسیون می‌توانید از تابع make_regression استفاده کنید. این تابع به شما اجازه می‌دهد تا مجموعه داده‌ای با خروجی پیوسته ایجاد کنید. ویژگی‌های ایجاد شده می‌توانند شامل متغیرهای موثر و غیرموثر باشند که این امر امکان آزمایش قدرت مدل در تشخیص الگوهای واقعی را فراهم می‌کند.

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

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

ایجاد مجموعه داده های آزمایشی برای دسته بندی

برای ایجاد مجموعه داده‌های آزمایشی برای مسائل دسته‌بندی (Classification) در یادگیری ماشین، می‌توان از توابع موجود در کتابخانه‌های پایتون مانند scikit-learn استفاده کرد. یکی از این توابع، make_classification است که مجموعه داده‌های مصنوعی برای دسته‌بندی ایجاد می‌کند. این تابع به شما اجازه می‌دهد ویژگی‌های مجموعه داده را مطابق نیازتان تنظیم کنید.

دسته بندی باینری

مثال ۱: داده های طبقه بندی باینری ۲ بعدی تولید شده توسط make_circles() دارای یک مرز تصمیم کروی هستند.

# Import necessary libraries
from sklearn.datasets import make_circles
import matplotlib.pyplot as plt

# Generate 2d classification dataset 
X, y = make_circles(n_samples=200, shuffle=True, 
     noise=0.1, random_state=42)
# Plot the generated datasets
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

خروجی:

تصویری از دیتاست دایره ای

مثال ۲: دو نیم دایره به هم پیوسته نشان دهنده داده های طبقه بندی باینری ۲ بعدی هستند که توسط تابع make_moons() تولید می شوند.

#import the necessary libraries
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
# generate 2d classification dataset
X, y = make_moons(n_samples=500, shuffle=True,
    noise=0.15, random_state=42)
# Plot the generated datasets
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

خروجی:

خروجی تابع make_moons

دسته بندی چند کلاسه

برای ایجاد مجموعه داده‌های آزمایشی برای دسته‌بندی چندکلاسه (Multiclass Classification)، می‌توانید از تابع make_classification در کتابخانه scikit-learn استفاده کنید. این تابع به شما امکان می‌دهد مجموعه داده‌های مصنوعی با تعداد کلاس‌های دلخواه و ویژگی‌های متنوع تولید کنید. این نوع مجموعه داده‌ها به شما کمک می‌کند تا الگوریتم‌های یادگیری ماشین خود را در شرایط مختلف آزمایش کنید.

مثال ۱: داده های تولید شده توسط تابع make_blobs() حباب هایی هستند که می توان از آنها برای خوشه بندی استفاده کرد.

#import the necessary libraries
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

# Generate 2d classification dataset
X, y = make_blobs(n_samples=500, centers=3, n_features=2, random_state=23)

# Plot the generated datasets
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

خروجی:

خروجی تابع make_blobs

مثال ۲: برای تولید داده توسط تابع make_classification() باید بین ویژگی های n_informative، n_redundant و n_classes X[:, :n_informative + n_redundant + n_repeated] تعادل برقرار کرد.

#import the necessary libraries
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt

# generate 2d classification dataset
X, y = make_classification(n_samples = 100, 
      n_features=2,
      n_redundant=0,
      n_informative=2,
      n_repeated=0,
      n_classes =3,
      n_clusters_per_class=1)

# Plot the generated datasets
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

خروجی:

خروجی ake_classification

مثال ۳: یک داده طبقه بندی تصادفی چند برچسبی توسط تابع make_multilabel_classification() ایجاد می شود.

# Import necessary libraries
from sklearn.datasets import make_multilabel_classification
import pandas as pd
import matplotlib.pyplot as plt

# Generate 2d classification dataset 
X, y = make_multilabel_classification(n_samples=500, n_features=2, 
         n_classes=2, n_labels=2,
         allow_unlabeled=True,
         random_state=23)
# create pandas dataframe from generated dataset
df = pd.concat([pd.DataFrame(X, columns=['X1', 'X2']), 
    pd.DataFrame(y, columns=['Label1', 'Label2'])],
   axis=1)
display(df.head())

# Plot the generated datasets
plt.scatter(df['X1'], df['X2'], c=df['Label1'])
plt.show()

خروجی:

      X1      X2    Label1    Label2
۰    ۱۴.۰    ۳۴.۰     ۰        ۱
۱    ۳۰.۰    ۲۲.۰     ۱        ۱
۲    ۲۹.۰    ۱۹.۰     ۱        ۱
۳    ۲۱.۰    ۱۹.۰     ۱        ۱
۴    ۱۶.۰    ۳۲.۰     ۰        ۱

خروجی تابع make_multilabel_classification

ایجاد مجموعه داده های آزمایشی برای رگرسیون

برای ایجاد مجموعه داده‌های آزمایشی برای مسائل رگرسیون (Regression) در یادگیری ماشین، می‌توان از تابع make_regression در کتابخانه scikit-learn استفاده کرد. این تابع به شما امکان می‌دهد مجموعه داده‌های مصنوعی با مقادیر خروجی پیوسته ایجاد کنید. پارامترهای این تابع قابل تنظیم هستند تا مجموعه داده‌هایی با ویژگی‌های دلخواه ایجاد کنید.

مثال ۱: با استفاده از make_regression یک ویژگی و هدف ۱ بعدی برای رگرسیون خطی ایجاد کنید.

# Import necessary libraries
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
# Generate 1d Regression dataset 
X, y = make_regression(n_samples = 50, n_features=1,noise=20, random_state=23)
# Plot the generated datasets
plt.scatter(X, y)
plt.show()

خروجی:

خروجی تابع make_regression

مثال ۲: ویژگی Multilabel با استفاده از make_sparse_uncorrelated()

# Import necessary libraries
from sklearn.datasets import make_sparse_uncorrelated
import matplotlib.pyplot as plt
# Generate 1d Regression dataset 
X, y = make_sparse_uncorrelated(n_samples = 100, n_features=4, random_state=23)
# Plot the generated datasets
plt.figure(figsize=(12,10))
for i in range(4):
 plt.subplot(2,2, i+1)
 plt.scatter(X[:,i], y)
 plt.xlabel('X'+str(i+1))
 plt.ylabel('Y')
plt.show()

خروجی:

خروجی تابع

مثال۳: 3 ویژگی Multilabel با استفاده از make_friedman2()

# Import necessary libraries
from sklearn.datasets import make_friedman2
import matplotlib.pyplot as plt
# Generate 1d Regression dataset 
X, y = make_friedman2(n_samples = 100, random_state=23)
# Plot the generated datasets
plt.figure(figsize=(12,10))
for i in range(4):
 plt.subplot(2,2, i+1)
 plt.scatter(X[:,i], y)
 plt.xlabel('X'+str(i+1))
 plt.ylabel('Y')
plt.show()

خروجی:

خروجی تابع make_friedman2

نتیجه گیری

ایجاد مجموعه داده‌های آزمایشی برای یادگیری ماشین، به‌ویژه در مسائل دسته‌بندی (دودویی یا چندکلاسه) و رگرسیون، ابزار قدرتمندی برای توسعه و ارزیابی مدل‌ها است. استفاده از توابعی مانند make_classification و make_regression در کتابخانه scikit-learn به شما این امکان را می‌دهد که داده‌هایی با ویژگی‌های قابل تنظیم تولید کنید، که این امر برای شبیه‌سازی شرایط واقعی و آزمایش مدل‌ها در سناریوهای مختلف بسیار مفید است. این رویکرد نه تنها درک عمیق‌تری از عملکرد الگوریتم‌ها فراهم می‌کند، بلکه فرایند آموزش و توسعه مدل‌ها را تسریع می‌بخشد.

میزان رضایتمندی
لطفاً میزان رضایت خودتان را از این مطلب با دادن امتیاز اعلام کنید.
[ امتیاز میانگین 0 از 0 نفر ]
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع و مراجع:
geeksforgeeks scikit-learn

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *



برچسب‌ها:
پایتون یادگیری ماشین


پیمایش به بالا