ماشین لرنینگ با پایتون چیست؟ تمرین ماشین لرنینگ پایتون
یادگیری ماشین نحوهی برخورد ما با مشکلات مبتنی بر داده را متحول کرده است و به کامپیوترها این امکان را میدهد که از دادهها بیاموزند و بدون برنامهنویسی صریح، پیشبینیها یا تصمیمگیریها را انجام دهند. پایتون با اکوسیستم غنی از کتابخانهها و ابزارهایش، به زبان پیشفرض برای پیادهسازی الگوریتمهای یادگیری ماشین تبدیل شده است. چه تازهوارد این حوزه باشید و چه به دنبال گسترش مهارتهای خود، فهم اصول اولیه یادگیری ماشین و نحوهی اعمال آنها با استفاده از پایتون ضروری است.
در این راهنمای جامع، ما به مفاهیم اصلی یادگیری ماشین میپردازیم، الگوریتمهای کلیدی را بررسی میکنیم و یاد میگیریم که چگونه آنها را با استفاده از کتابخانههای محبوب پایتون مانند NumPy، Pandas، Matplotlib و Scikit-Learn پیادهسازی کنیم. در پایان، شما دانش کافی برای شروع به کار خواهید داشت.
چرا پایتون برای یادگیری ماشین؟
پایتون به دلایل متعددی به زبان ترجیحی برای یادگیری ماشین (ML) تبدیل شده است:
- سهولت استفاده و خوانایی: نحو پایتون تمیز، مختصر و شبیه به کد شبه است، که یادگیری و درک آن را آسان میکند. این خوانایی بار ذهنی را هنگام نوشتن و نگهداری کد ML کاهش میدهد، که در الگوریتمهای پیچیده بسیار مهم است.
- اکوسیستم غنی از کتابخانهها: پایتون دارای مجموعهای گسترده از کتابخانهها و فریمورکها است که به طور خاص برای ML و علم داده طراحی شدهاند. کتابخانههایی مانند NumPy، Pandas، Matplotlib و Scikit-Learn ابزارهای کارآمدی برای دستکاری دادهها، عملیات عددی، بصریسازی و پیادهسازی الگوریتمهای ML به طور یکپارچه فراهم میکنند.
- پشتیبانی جامعه و محبوبیت: پایتون در جوامع علم داده و ML به طور گستردهای پذیرفته شده است. محبوبیت آن به معنای وجود پشتیبانی گسترده از جامعه، منابع فراوان (آموزشها، فرومها، کتابخانهها) و توسعه فعال است، که موجب پیشرفت سریع و بهبود مستمر میشود.
- انعطافپذیری و چندکاربری: پایتون انعطافپذیری بالایی دارد و به مهندسان ML اجازه میدهد در حوزههای مختلفی، از پیشپردازش دادهها تا استقرار مدلها در تولید، کار کنند. این زبان با دیگر زبانها و پلتفرمها به خوبی یکپارچه میشود و امکان یکپارچهسازی بیدردسر با سیستمهای موجود را فراهم میکند.
- ابزارها و فریمورکهای پیشرفته: پایتون به عنوان پایهای برای فریمورکهای پیشرو ML مانند TensorFlow، PyTorch و scikit-learn عمل میکند، که قابلیتهای قدرتمندی برای یادگیری عمیق، شبکههای عصبی و مدلهای سنتی ML ارائه میدهند. این فریمورکها از نقاط قوت پایتون در سادگی و کارایی بهره میبرند.
- منابع آموزشی: بسیاری از موسسات آموزشی و پلتفرمهای آنلاین دورهها و منابعی در زمینه پایتون برای ML و علم داده ارائه میدهند، که این موضوع یادگیری و تسلط بر مفاهیم و تکنیکهای ML را برای مبتدیان و حرفهایها آسان میکند
انواع الگوریتمهای یادگیری ماشین
یادگیری با نظارت
الگوریتمهای یادگیری با نظارت با استفاده از دادههای برچسبدار آموزش میبینند، به این معنا که دادههای ورودی با خروجی صحیح برچسبگذاری شدهاند. هدف این الگوریتمها یادگیری نگاشت از ورودیها به خروجیها است تا بتوانند خروجی جدید را برای دادههای جدید پیشبینی کنند. الگوریتمهای رایج یادگیری با نظارت شامل موارد زیر میشوند:
- رگرسیون خطی: برای پیشبینی نتایج پیوسته استفاده میشود. رابطه بین یک متغیر وابسته و یک یا چند متغیر مستقل را با قرار دادن یک معادله خطی به دادههای مشاهده شده مدلسازی میکند.
- رگرسیون لجستیک: برای وظایف طبقهبندی دودویی (مثلاً پیشبینی بله/خیر) استفاده میشود. احتمالات را با استفاده از یک تابع لجستیک تخمین میزند.
- درخت تصمیم: این مدلها با یادگیری قواعد تصمیمگیری ساده از ویژگیهای دادهها، مقدار یک متغیر هدف را پیشبینی میکنند.
- جنگل تصادفی: یک ترکیب از چندین درخت تصمیم که بهطور معمول برای طبقهبندی و رگرسیون استفاده میشود و دقت مدل را بهبود میبخشد و کنترل بیشبرازش را فراهم میکند.
- ماشینهای بردار پشتیبان (SVM): در فضاهای با ابعاد بالا مؤثر است، SVM بهطور عمده برای طبقهبندی استفاده میشود اما میتواند برای رگرسیون نیز به کار رود.
- شبکههای عصبی: این مدلها قوی هستند و میتوانند روابط پیچیده غیرخطی را جذب کنند. بهطور گسترده در کاربردهای یادگیری عمیق استفاده میشوند.
یادگیری بدون نظارت
الگوریتمهای یادگیری بدون نظارت با دادههایی استفاده میشوند که پاسخهای برچسبگذاری شده ندارند. هدف اینجا استنتاج ساختار طبیعی موجود در یک مجموعه دادهها است. تکنیکهای رایج یادگیری بدون نظارت شامل موارد زیر میشوند:
- خوشهبندی: الگوریتمهایی مانند K-means، خوشهبندی سلسلهمراتبی، و DBSCAN یک مجموعه از اشیا را به گونهای گروهبندی میکنند که اشیا در یک گروه بیشترین شباهت را به یکدیگر داشته باشند تا به اشیا در گروههای دیگر.
- ارتباط: این الگوریتمها قوانینی را پیدا میکنند که بخشهای بزرگی از دادههای شما را توصیف میکنند، مانند تحلیل سبد خرید.
- تحلیل مؤلفههای اصلی (PCA): یک روش آماری که از یک تبدیل متعامد برای تبدیل مجموعهای از مشاهدات از متغیرهای ممکن است به یک مجموعه از مقادیر متغیرهای غیرهمبسته خطی استفاده میکند.
- اتواینکدرها: نوع خاصی از شبکه عصبی که برای یادگیری کدگذاریهای کارآمد از دادههای بدون برچسب استفاده میشود.
یادگیری تقویتی
الگوریتمهای یادگیری تقویتی یاد میگیرند که یک دنباله از تصمیمات را بگیرند. این الگوریتم یاد میگیرد که در یک محیط نامطمئن و بالقوه پیچیده به یک هدف برسد. در یادگیری تقویتی، یک عامل با پیروی از یک سیاست بر اساس اعمالی که باید انجام دهد تصمیم میگیرد و از نتایج این اعمال از طریق پاداشها یا جریمهها یاد میگیرد.
- Q-learning: این یک الگوریتم یادگیری تقویتی بدون مدل است که ارزش یک عمل در یک حالت خاص را یاد میگیرد.
- شبکههای Q-عمیق (DQN): این روش Q-learning را با شبکههای عصبی عمیق ترکیب میکند و به روش اجازه میدهد که سیاستهای موفق را مستقیماً از ورودیهای حسگر با ابعاد بالا یاد بگیرد.
- روشهای گرادیان سیاست: این روشها پارامترهای یک سیاست را مستقیماً بهینهسازی میکنند بهجای تخمین ارزش اعمال.
- جستجوی درختی مونت کارلو (MCTS): در فرآیندهای تصمیمگیری برای یافتن تصمیمات بهینه با اجرای سناریوها استفاده میشود، بهویژه در بازیهایی مانند Go.
این دستهبندیها نمای کلی از رایجترین انواع الگوریتمهای یادگیری ماشین ارائه میدهند. هر یک دارای نقاط قوت و موارد استفاده ایدهآل خود هستند، که آنها را برای برخی انواع وظایف نسبت به دیگران مناسبتر میکند.
ماشین لرنینگ و هوش مصنوعی و یادگیری عمیق (مقایسه کامل)
پیادهسازی الگوریتمهای یادگیری ماشین با استفاده از کتابخانههای محبوب
برای پیادهسازی الگوریتمهای یادگیری ماشین با استفاده از کتابخانههای محبوب پایتون مانند NumPy، Pandas، Matplotlib و Scikit-Learn، میتوان مراحل زیر را دنبال کرد:
نصب کتابخانهها: ابتدا باید کتابخانههای مورد نیاز را نصب کنید. اگر این کتابخانهها را نصب نکردهاید، میتوانید از pip استفاده کنید:
pip install numpy pandas matplotlib scikit-learn
وارد کردن کتابخانهها: پس از نصب، میتوانید کتابخانهها را وارد کنید:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score, confusion_matrix, mean_squared_error
آمادهسازی دادهها: از Pandas برای خواندن و آمادهسازی دادهها استفاده کنید:
خواندن دادهها از فایل CSV
data = pd.read_csv('data.csv')
بررسی دادهها
print(data.head())
جدا کردن ویژگیها و برچسبها
X = data.drop('target', axis=1)
y = data['target']
بلد باشید: مثال یادگیری ماشین: 13 کاربرد روزمره که باید بدانید
تقسیم دادهها به مجموعههای آموزش و آزمایش
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
پیشپردازش دادهها: استفاده از StandardScaler برای مقیاسبندی دادهها:
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
پیادهسازی الگوریتمها: از Scikit-Learn برای پیادهسازی الگوریتمهای مختلف استفاده کنید.
مدل رگرسیون خطی
lin_reg = LinearRegression()
lin_reg.fit(X_train_scaled, y_train)
پیشبینی
y_pred = lin_reg.predict(X_test_scaled)
ارزیابی مدل
mse = mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse}')
رگرسیون لجستیک
مدل رگرسیون لجستیک
log_reg = LogisticRegression()
log_reg.fit(X_train_scaled, y_train)
پیشبینی
y_pred = log_reg.predict(X_test_scaled)
ارزیابی مدل
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')
درخت تصمیم
مدل درخت تصمیم
tree = DecisionTreeClassifier()
tree.fit(X_train_scaled, y_train)
پیشبینی
y_pred = tree.predict(X_test_scaled)
ارزیابی مدل
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')
جنگل تصادفی
مدل جنگل تصادفی
forest = RandomForestClassifier(n_estimators=100)
forest.fit(X_train_scaled, y_train)
پیشبینی
y_pred = forest.predict(X_test_scaled)
ارزیابی مدل
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')
ماشین بردار پشتیبان (SVM)
مدل SVM
svm = SVC()
svm.fit(X_train_scaled, y_train)
پیشبینی
y_pred = svm.predict(X_test_scaled)
ارزیابی مدل
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')
شبکههای عصبی
مدل شبکه عصبی
mlp = MLPClassifier(hidden_layer_sizes=(100,), max_iter=300)
mlp.fit(X_train_scaled, y_train)
پیشبینی
y_pred = mlp.predict(X_test_scaled)
ارزیابی مدل
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')
بصریسازی نتایج: استفاده از Matplotlib برای بصریسازی نتایج:
ترسیم نمودار
plt.scatter(X_test['feature1'], y_test, color='blue', label='Actual')
plt.scatter(X_test['feature1'], y_pred, color='red', label='Predicted')
plt.xlabel('Feature 1')
plt.ylabel('Target')
plt.legend()
plt.show()
دانلود کنید: یادگیری ماشین با پایتون با 12 درس+ کتاب یادگیری ماشین
این مراحل به شما کمک میکنند تا الگوریتمهای مختلف یادگیری ماشین را با استفاده از کتابخانههای پایتون پیادهسازی و ارزیابی کنید. با توجه به نوع مساله و دادههای خود، میتوانید از الگوریتمهای مختلف استفاده کنید و بهترین مدل را انتخاب کنید.
تمرین عملی
تمرین 1
برای تمرین ماشین لرنینگ با پایتون، میتوانید یک پروژه ساده را انتخاب کنید و مرحله به مرحله پیش بروید. در اینجا یک مثال ساده برای شروع ارائه میدهم: پیشبینی قیمت مسکن با استفاده از دیتاست Boston Housing. این پروژه شامل چند مرحله اصلی است:
- بارگذاری و کاوش دادهها
- پیشپردازش دادهها
- ایجاد مدل ماشین لرنینگ
- ارزیابی مدل
- بارگذاری و کاوش دادهها
ابتدا لازم است که کتابخانههای مورد نیاز را نصب و سپس دیتاست را بارگذاری کنیم:
# نصب کتابخانهها
!pip install pandas numpy scikit-learn matplotlib seaborn
# بارگذاری کتابخانهها
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# بارگذاری دیتاست Boston Housing
boston = load_boston()
data = pd.DataFrame(boston.data, columns=boston.feature_names)
data['PRICE'] = boston.target
# نمایش چند سطر از دادهها
data.head()
2.پیشپردازش دادهها
اکنون دادهها را بررسی و تمیز میکنیم.
# بررسی اطلاعات دیتاست
data.info()
# بررسی مقادیر خالی
data.isnull().sum()
# نمایش آمار توصیفی
data.describe()
# نمایش توزیع قیمت مسکن
plt.figure(figsize=(10, 6))
sns.histplot(data['PRICE'], bins=30, kde=True)
plt.title('Distribution of House Prices')
plt.xlabel('Price')
plt.ylabel('Frequency')
plt.show()
بهترین ها رو بلدین: 7 بهترین آموزشگاه کلاس برنامه نویسی (تهران+ شهرهای بزرگ)
3.ایجاد مدل ماشین لرنینگ
در این مرحله، مدل رگرسیون خطی را آموزش میدهیم.
# تقسیم دادهها به ویژگیها (X) و هدف (y)
X = data.drop('PRICE', axis=1)
y = data['PRICE']
# تقسیم دادهها به مجموعههای آموزش و تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# نرمالسازی دادهها
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# ایجاد و آموزش مدل رگرسیون خطی
model = LinearRegression()
model.fit(X_train, y_train)
# پیشبینی با مدل
y_pred = model.predict(X_test)
4.ارزیابی مدل
در نهایت، مدل را با استفاده از معیارهای مختلف ارزیابی میکنیم.
# محاسبه Mean Squared Error وR^2
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f'Mean Squared Error: {mse}')
print(f'R^2 Score: {r2}')
# رسم نمودار پیشبینیها در مقابل مقادیر واقعی
plt.figure(figsize=(10, 6))
plt.scatter(y_test, y_pred, alpha=0.6)
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'k--', lw=3)
plt.xlabel('Actual')
plt.ylabel('Predicted')
plt.title('Actual vs Predicted Prices')
plt.show()
این مراحل پایهای برای هر پروژه ماشین لرنینگ است. میتوانید با استفاده از دیتاستهای دیگر و الگوریتمهای متفاوت (مانند درخت تصمیم، رندوم فارست، SVM، و غیره) تمرینهای بیشتری انجام دهید تا تجربه بیشتری کسب کنید.
تفاوت هوش مصنوعی رو با این یکی یاد بگیرید: آموزش هوش تجاری از صفر تا صد با 30 درس
تمرین 2
در این تمرین، میخواهیم یک مدل طبقهبندی ساده با استفاده از دیتاست معروف "Iris" و کتابخانهی scikit-learn ایجاد کنیم. این دیتاست شامل اطلاعاتی دربارهی انواع مختلف گلهای Iris است و هدف ما طبقهبندی انواع گلها بر اساس ویژگیهای آنهاست.
مراحل:
- بارگذاری و آمادهسازی دادهها:
- نصب و وارد کردن کتابخانههای مورد نیاز.
- بارگذاری دیتاست.
- بررسی و پیشپردازش دادهها.
- تقسیم دادهها به مجموعههای آموزشی و آزمایشی.
- انتخاب و آموزش یک مدل طبقهبندی.
- پیشبینی بر روی دادههای آزمایشی.
- ارزیابی دقت مدل.
# نصب کتابخانههای مورد نیاز
!pip install numpy pandas scikit-learn
# وارد کردن کتابخانهها
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# بارگذاری دیتاست Iris
iris = load_iris()
X = iris.data
y = iris.target
# تقسیم دادهها به مجموعههای آموزشی و آزمایشی
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# استانداردسازی دادهها
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# ایجاد مدل KNN و آموزش آن
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# پیشبینی بر روی دادههای آزمایشی
y_pred = knn.predict(X_test)
# ارزیابی مدل
accuracy = accuracy_score(y_test, y_pred)
print(f"دقت مدل: {accuracy * 100:.2f}%")
آموزش کامل هوش مصنوعی: آموزش هوش مصنوعی از صفر تا صد با 14 درس+ جزوه
توضیحات:
- بارگذاری و آمادهسازی دادهها: با استفاده از کتابخانهی scikit-learn، دیتاست Iris را بارگذاری میکنیم و سپس دادهها را به مجموعههای آموزشی و آزمایشی تقسیم میکنیم.
- ایجاد و آموزش مدل: با استفاده از مدل K-Nearest Neighbors (KNN) و کتابخانهی scikit-learn، مدل خود را ایجاد و آموزش میدهیم.
- ارزیابی مدل: دقت مدل را با استفاده از دادههای آزمایشی ارزیابی میکنیم و نتیجه را به صورت درصد نمایش میدهیم.
این تمرین یک مثال ساده و پایهای از استفاده از ماشین لرنینگ با پایتون است. با پیادهسازی و اجرای آن، میتوانید مفاهیم پایهای ماشین لرنینگ و نحوهی استفاده از ابزارهای پایتون برای حل مسائل یادگیری ماشین را بهتر درک کنید.
جمع بندی
ماشین لرنینگ (یادگیری ماشین) با استفاده از پایتون به یکی از موضوعات جذاب و پرکاربرد در دنیای فناوری اطلاعات تبدیل شده است. زبان پایتون به دلیل سادگی و خوانایی بالا، کتابخانههای قدرتمند، و جامعهی بزرگ و فعال کاربران، یکی از بهترین انتخابها برای توسعهی مدلهای ماشین لرنینگ است. با استفاده از کتابخانههایی مانند NumPy، pandas، scikit-learn، TensorFlow، و PyTorch، میتوان به راحتی مدلهای پیچیدهی ماشین لرنینگ را پیادهسازی و ارزیابی کرد.
در پایان، میتوان گفت که یادگیری ماشین با پایتون، نه تنها یک مهارت فنی ارزشمند است، بلکه ابزاری قدرتمند برای حل مسائل پیچیده در حوزههای مختلف از جمله هوش مصنوعی، تحلیل داده، و حتی علوم انسانی است. با استفاده از این زبان و کتابخانههای موجود، میتوان به سرعت از مرحلهی ایده به مرحلهی اجرا و پیادهسازی رسید و نتایج قابل توجهی کسب کرد.