در این مقاله، به بررسی بهترین کتابخانههای پایتون برای یادگیری ماشین خواهیم پرداخت و توضیح میدهیم که چگونه این کتابخانهها وظایفی مانند پیشپردازش دادهها، ساخت مدل و ارزیابی را تسهیل میکنند. چه یک مبتدی باشید که تازه شروع به کار کردهاید یا یک حرفهای که به دنبال بهینهسازی فرآیندهاست، این کتابخانهها به شما کمک میکنند تا از تمام ظرفیت یادگیری ماشین با پایتون بهره ببرید.
مقدمه
یادگیری ماشین «Machine Learning» به یکی از اجزای مهم در حوزههای مختلف تبدیل شده است و به سازمانها امکان میدهد دادهها را تحلیل کنند، پیشبینی انجام دهند و فرآیندها را خودکار کنند. زبان برنامهنویسی پایتون به دلیل سادگی و انعطافپذیریاش شناخته شده است و طیف گستردهای از کتابخانهها را ارائه میدهد که انجام وظایف یادگیری ماشین را آسان میکنند. این کتابخانهها به توسعهدهندگان و دانشمندان داده کمک میکنند تا الگوریتمهای پیچیده را بهسرعت و بهصورت مؤثر پیادهسازی کنند. با استفاده از ابزارهای پایتون، کاربران میتوانند پروژههای یادگیری ماشین را بهطور کارآمد مدیریت کرده و به نتایج بهتری دست یابند.
کتابخانههای پایتون برای یادگیری ماشین
در ادامه لیستی از بهترین کتابخانههای پایتون برای یادگیری ماشین آورده شده است که توسعه در این حوزه را سادهتر میکنند:
۱- کتابخانه NumPy
NumPy یک کتابخانه بسیار محبوب از کتابخانههای پایتون برای یادگیری ماشین است که برای پردازش آرایهها و ماتریسهای چندبعدی بزرگ است که از مجموعهای گسترده از توابع ریاضی سطح بالا بهره میبرد. این کتابخانه در محاسبات علمی پایه در یادگیری ماشین بسیار مفید است و بهویژه در مواردی مانند جبر خطی، تبدیل فوریه، و تولید اعداد تصادفی کاربرد دارد.
مثال: انجام عملیات جبر خطی
import numpy as np # Create a feature matrix (X) and target vector (y) X = np.array([[1, 2], [3, 4], [5, 6]]) y = np.array([1, 2, 3]) # Calculate the mean of each feature mean = np.mean(X, axis=0) print("Mean of features:", mean)
خروجی:
Mean of features: [3. 4.]
۲- کتابخانه Pandas
Pandas یکی از کتابخانههای محبوب پایتون برای تحلیل داده است. اگرچه این کتابخانه مستقیماً به حوزه یادگیری ماشین مرتبط نیست، اما در مرحله آمادهسازی دادهها قبل از آموزش مدلها بسیار کاربردی است.
این کتابخانه بهطور خاص برای استخراج و آمادهسازی دادهها در یادگیری ماشین توسعه داده شده و ساختارهای داده سطح بالا و ابزارهای متنوعی را برای تحلیل داده ارائه میدهد. همچنین، متدهای داخلی بسیاری برای گروهبندی، ترکیب و فیلتر کردن دادهها دارد.
مثال: پاکسازی و آمادهسازی دادهها
import pandas as pd # Create a DataFrame with missing values data = { 'Country': ['Brazil', 'Russia', 'India', None], 'Population': [200.4, 143.5, None, 52.98] } df = pd.DataFrame(data) # Fill missing values df['Population'].fillna(df['Population'].mean(), inplace=True) print(df)
خروجی:
Country Population ۰ Brazil 200.40 ۱ Russia 143.50 ۲ India 132.99 ۳ None 52.98
۳- کتابخانه Matplotlib
Matplotlib یک کتابخانه بسیار محبوب پایتون برای بصریسازی دادهها است. مشابه Pandas، این کتابخانه نیز بهطور مستقیم به یادگیری ماشین مرتبط نیست، اما زمانی که برنامهنویس بخواهد الگوهای موجود در دادهها را بصری کند، بسیار مفید واقع میشود.
این کتابخانه برای رسم نمودارهای دوبعدی (2D) طراحی شده است و امکان ایجاد انواع گرافها و نمودارها را فراهم میکند.
ماژولی به نام pyplot
این فرآیند را سادهتر میکند، زیرا ویژگیهایی مانند کنترل سبک خطوط، تنظیم فونت، فرمتدهی به محورها و موارد دیگر را ارائه میدهد. این کتابخانه انواع مختلفی از نمودارها مانند هیستوگرام، نمودارهای خطا، نمودارهای ستونی و غیره را برای بصریسازی دادهها در اختیار کاربر قرار میدهد.
مثال: ایجاد نمودار خطی
# Python program using Matplotlib # for forming a linear plot # importing the necessary packages and modules import matplotlib.pyplot as plt import numpy as np # Prepare the data x = np.linspace(0, 10, 100) # Plot the data plt.plot(x, x, label ='linear') # Add a legend plt.legend() # Show the plot plt.show()
خروجی:
۴- کتابخانه SciPy
SciPy یک کتابخانه بسیار محبوب از کتابخانههای پایتون برای یادگیری ماشین است، زیرا ماژولهای مختلفی را برای بهینهسازی، جبر خطی، انتگرالگیری و آمار ارائه میدهد.
بین کتابخانه SciPy و SciPy Stack تفاوت وجود دارد؛ SciPy یکی از بستههای اصلی است که SciPy Stack را تشکیل میدهد. علاوه بر این، SciPy برای پردازش و تغییر تصاویر نیز بسیار کاربردی است.
مثال: پردازش و تغییر تصاویر
# Python script using Scipy # for image manipulation from scipy.misc import imread, imsave, imresize # Read a JPEG image into a numpy array img = imread('D:/Programs / cat.jpg') # path of the image print(img.dtype, img.shape) # Tinting the image img_tint = img * [1, 0.45, 0.3] # Saving the tinted image imsave('D:/Programs / cat_tinted.jpg', img_tint) # Resizing the tinted image to be 300 x 300 pixels img_tint_resize = imresize(img_tint, (300, 300)) # Saving the resized tinted image imsave('D:/Programs / cat_tinted_resized.jpg', img_tint_resize)
تصویر اصلی:
تصویر رنگی:
تصویر رنگی ریسایز شده:
۵- کتابخانه Scikit-Learn
Scikit-learn یکی از محبوبترین کتابخانههای یادگیری ماشین برای الگوریتمهای کلاسیک است. این کتابخانه بر پایه دو کتابخانه پایهای پایتون، یعنی NumPy و SciPy ساخته شده است.
Scikit-learn از اکثر الگوریتمهای یادگیری نظارتشده و بدون نظارت پشتیبانی میکند. همچنین، برای دادهکاوی و تحلیل دادهها بسیار مناسب است که آن را به ابزاری عالی برای افرادی که تازه یادگیری ماشین را شروع کردهاند تبدیل میکند.
مثال: استفاده از الگوریتم طبقهبندی درخت تصمیم (Decision Tree Classifier)
# Import necessary libraries from sklearn import datasets from sklearn.tree import DecisionTreeClassifier # Load the iris dataset iris = datasets.load_iris() # Split the dataset into features (X) and target labels (y) X = iris.data # Features (sepal length, sepal width, petal length, petal width) y = iris.target # Target (species) # Initialize the Decision Tree Classifier clf = DecisionTreeClassifier() # Train the model on the entire dataset clf.fit(X, y) # Make predictions on the same dataset predictions = clf.predict(X) # Print the first 10 predictions print("Predicted labels for the first 10 samples:", predictions[:10]) # Print the actual labels for comparison print("Actual labels for the first 10 samples:", y[:10])
خروجی:
Predicted labels for the first 10 samples: [0 0 0 0 0 0 0 0 0 0] Actual labels for the first 10 samples: [0 0 0 0 0 0 0 0 0 0]
۶- کتابخانه Theano
همانطور که میدانیم، یادگیری ماشین اساساً مبتنی بر ریاضیات و آمار است. Theano یک کتابخانه پرکاربرد از کتابخانههای پایتون برای یادگیری ماشین است که برای تعریف، ارزیابی و بهینهسازی عبارات ریاضی شامل آرایههای چندبعدی به کار میرود.
این کار با بهینهسازی استفاده از پردازنده (CPU) و کارت گرافیک (GPU) انجام میشود. Theano بهطور گسترده برای تست واحدی (Unit Testing) و خودتأییدی (Self-Verification) استفاده میشود تا انواع مختلف خطاها را شناسایی و تشخیص دهد.
Theano یک کتابخانه بسیار قدرتمند است که برای پروژههای علمی بزرگ با محاسبات سنگین استفاده شده است. با این حال، به اندازه کافی ساده و قابل دسترس است که افراد بتوانند از آن در پروژههای خود بهره ببرند.
# Python program using Theano # for computing a Logistic # Function import theano import theano.tensor as T x = T.dmatrix('x') s = 1 / (1 + T.exp(-x)) logistic = theano.function([x], s) logistic([[0, 1], [-1, -2]])
خروجی:
array([[0.5, 0.73105858], [۰.۲۶۸۹۴۱۴۲, ۰.۱۱۹۲۰۲۹۲]])
۷- کتابخانه TensorFlow
TensorFlow یکی از محبوبترین کتابخانههای متنباز برای محاسبات عددی با عملکرد بالا است که توسط تیم Google Brain در گوگل توسعه داده شده است. همانطور که از نام آن پیداست، TensorFlow یک چارچوب برای تعریف و اجرای محاسباتی است که شامل تنسورها (Tensors) میشود.
این کتابخانه قابلیت آموزش و اجرای شبکههای عصبی عمیق را دارد که میتوانند در توسعه بسیاری از برنامههای هوش مصنوعی مورد استفاده قرار گیرند. TensorFlow بهطور گسترده در تحقیقات و کاربردهای یادگیری عمیق (Deep Learning) به کار گرفته میشود.
مثال:
# Python program using TensorFlow # for multiplying two arrays # import `tensorflow` import tensorflow as tf # Initialize two constants x1 = tf.constant([1, 2, 3, 4]) x2 = tf.constant([5, 6, 7, 8]) # Multiply result = tf.multiply(x1, x2) # Initialize the Session sess = tf.Session() # Print the result print(sess.run(result)) # Close the session sess.close()
خروجی:
[ ۵ ۱۲ ۲۱ ۳۲]
۸- کتابخانه Keras
Keras یکی از کتابخانههای محبوب پایتون برای یادگیری ماشین است. این کتابخانه یک رابط برنامهنویسی کاربردی (API) سطح بالا برای شبکههای عصبی است که قادر است بر روی TensorFlow، CNTK یا Theano اجرا شود. Keras بهطور یکپارچه میتواند هم بر روی پردازنده مرکزی (CPU) و هم بر روی پردازنده گرافیکی (GPU) اجرا شود.
Keras کار را برای مبتدیان یادگیری ماشین بسیار آسان میکند تا شبکههای عصبی را طراحی و پیادهسازی کنند. یکی از ویژگیهای برجسته Keras این است که امکان ساخت نمونههای اولیه (Prototyping) سریع و آسان را فراهم میکند.
مثال: طراحی و آموزش شبکه عصبی ساده
# Importing necessary libraries from keras.models import Sequential from keras.layers import Dense, Flatten from keras.datasets import mnist from keras.utils import to_categorical # Loading the MNIST dataset (X_train, y_train), (X_test, y_test) = mnist.load_data() # Normalizing the input data X_train = X_train / 255.0 X_test = X_test / 255.0 # One-hot encoding the labels y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10) # Building the model model = Sequential() model.add(Flatten(input_shape=(28, 28))) # Flatten the 2D images into 1D vectors model.add(Dense(128, activation='relu')) # Hidden layer with ReLU activation model.add(Dense(10, activation='softmax')) # Output layer with Softmax for classification # Compiling the model model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # Training the model model.fit(X_train, y_train, epochs=5, batch_size=32, validation_split=0.2) # Evaluating the model test_loss, test_accuracy = model.evaluate(X_test, y_test) print(f"Test Accuracy: {test_accuracy:.4f}")
خروجی:
Epoch 1/5 ۱۵۰۰/۱۵۰۰ [==============================] - 4s 2ms/step - loss: 0.2941 - accuracy: 0.9163 - val_loss: 0.1372 - val_accuracy: 0.9615 Epoch 2/5 ۱۵۰۰/۱۵۰۰ [==============================] - 3s 2ms/step - loss: 0.1236 - accuracy: 0.9647 - val_loss: 0.1056 - val_accuracy: 0.9697 ... Test Accuracy: 0.9765
۹- کتابخانه PyTorch
PyTorch یک کتابخانه محبوب و متنباز پایتون برای یادگیری ماشین است که بر پایه Torch ساخته شده است. Torch یک کتابخانه یادگیری ماشین متنباز است که به زبان C پیادهسازی شده و دارای یک پوششگر در Lua است. PyTorch مجموعهای گسترده از ابزارها و کتابخانهها را ارائه میدهد که از بینایی کامپیوتری (Computer Vision)، پردازش زبان طبیعی (NLP) و بسیاری از برنامههای دیگر یادگیری ماشین پشتیبانی میکند.
این کتابخانه به توسعهدهندگان این امکان را میدهد که محاسبات را بر روی تنسورها با شتابدهی GPU انجام دهند و همچنین در ایجاد گرافهای محاسباتی کمک میکند.
مثال: انجام محاسبات با شتابدهی GPU و ایجاد گراف محاسباتی
# Python program using PyTorch # for defining tensors fit a # two-layer network to random # data and calculating the loss import torch dtype = torch.float device = torch.device("cpu") # device = torch.device("cuda:0") Uncomment this to run on GPU # N is batch size; D_in is input dimension; # H is hidden dimension; D_out is output dimension. N, D_in, H, D_out = 64, 1000, 100, 10 # Create random input and output data x = torch.random(N, D_in, device=device, dtype=dtype) y = torch.random(N, D_out, device=device, dtype=dtype) # Randomly initialize weights w1 = torch.random(D_in, H, device=device, dtype=dtype) w2 = torch.random(H, D_out, device=device, dtype=dtype) learning_rate = 1e-6 for t in range(500): # Forward pass: compute predicted y h = x.mm(w1) h_relu = h.clamp(min=0) y_pred = h_relu.mm(w2) # Compute and print loss loss = (y_pred - y).pow(2).sum().item() print(t, loss) # Backprop to compute gradients of w1 and w2 with respect to loss grad_y_pred = 2.0 * (y_pred - y) grad_w2 = h_relu.t().mm(grad_y_pred) grad_h_relu = grad_y_pred.mm(w2.t()) grad_h = grad_h_relu.clone() grad_h[h < 0] = 0 grad_w1 = x.t().mm(grad_h) # Update weights using gradient descent w1 -= learning_rate * grad_w1 w2 -= learning_rate * grad_w2
خروجی:
۰ ۴۷۱۶۸۳۴۴.۰ ۱ ۴۶۳۸۵۵۸۴.۰ ۲ ۴۳۱۵۳۵۷۶.۰ ... ... ... ۴۹۷ ۳.987660602433607e-05 ۴۹۸ ۳.945609932998195e-05 ۴۹۹ ۳.897604619851336e-05
سخن آخر
چندکاره بودن، سادگی و اکوسیستم گسترده پایتون آن را به انتخابی محبوب برای وظایف یادگیری ماشین تبدیل کرده است. از Scikit-Learn برای الگوریتمهای کلاسیک تا TensorFlow و PyTorch برای یادگیری عمیق، کتابخانههای پایتون برای یادگیری ماشین به هر مرحله از فرآیند یادگیری ماشین پاسخ میدهند. کتابخانههایی مانند Pandas و NumPy فرآیند پیشپردازش دادهها را ساده میکنند، در حالی که Matplotlib و Seaborn در بصریسازی دادهها کمک میکنند. ابزارهای تخصصی مانند NLTK، XGBoost و LightGBM توانایی حل مسائل پیچیده را بهطور مؤثر تقویت میکنند.