هر زمان که به یادگیری ماشین فکر میکنیم، اولین چیزی که به ذهنمان میرسد، یک مجموعه داده «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()
خروجی:
دسته بندی چند کلاسه
برای ایجاد مجموعه دادههای آزمایشی برای دستهبندی چندکلاسه (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_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()
خروجی:
مثال ۳: یک داده طبقه بندی تصادفی چند برچسبی توسط تابع 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 ۰ ۱۴.۰ ۳۴.۰ ۰ ۱ ۱ ۳۰.۰ ۲۲.۰ ۱ ۱ ۲ ۲۹.۰ ۱۹.۰ ۱ ۱ ۳ ۲۱.۰ ۱۹.۰ ۱ ۱ ۴ ۱۶.۰ ۳۲.۰ ۰ ۱
ایجاد مجموعه داده های آزمایشی برای رگرسیون
برای ایجاد مجموعه دادههای آزمایشی برای مسائل رگرسیون (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()
خروجی:
مثال ۲: ویژگی 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_classification
و make_regression
در کتابخانه scikit-learn به شما این امکان را میدهد که دادههایی با ویژگیهای قابل تنظیم تولید کنید، که این امر برای شبیهسازی شرایط واقعی و آزمایش مدلها در سناریوهای مختلف بسیار مفید است. این رویکرد نه تنها درک عمیقتری از عملکرد الگوریتمها فراهم میکند، بلکه فرایند آموزش و توسعه مدلها را تسریع میبخشد.