کتابخانه scikit-learn در پایتون
کتابخانه Scikit-Learn یکی از پرکاربردترین ابزارهای پایتون برای یادگیری ماشین (Machine Learning) است. این کتابخانه شامل الگوریتمها و ابزارهای آماده برای مسائل دستهبندی، رگرسیون، خوشهبندی و پیشپردازش دادهها میباشد و به توسعهدهندگان اجازه میدهد تا مدلهای یادگیری ماشین را سریع و با کمترین پیچیدگی پیادهسازی کنند.
ویژگیهای کلیدی Scikit-Learn
- سادگی و یکپارچگی: رابطهای کاربری یکنواخت و استاندارد برای تمام الگوریتمها.
- پشتیبانی از الگوریتمهای متنوع: شامل رگرسیون خطی و لجستیک، درخت تصمیم، SVM، KNN، و الگوریتمهای خوشهبندی مانند KMeans.
- ابزارهای پیشپردازش داده: نرمالسازی، مقیاسبندی، رمزگذاری دستهها و پر کردن دادههای گمشده.
- امکان ارزیابی و اعتبارسنجی مدلها: شامل Cross-Validation، Grid Search و معیارهای دقت مختلف.
- مستندسازی و جامعه بزرگ: مستندات کامل و انجمنهای فعال در GitHub و Stack Overflow.
نصب Scikit-Learn
برای نصب Scikit-Learn میتوان از pip استفاده کرد:
pip install scikit-learn
این دستور کتابخانه و وابستگیهای مورد نیاز آن مانند numpy و scipy را نصب میکند.
ساختار کلی پروژه با Scikit-Learn
برای استفاده از Scikit-Learn معمولاً مراحل زیر دنبال میشوند:
- بارگذاری و آمادهسازی دادهها
- تقسیم داده به مجموعه آموزش و تست
- انتخاب و آموزش مدل
- پیشبینی و ارزیابی مدل
- بهینهسازی و تنظیم هایپرپارامترها
مثال عملی: رگرسیون خطی
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np
# دادههای نمونه
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([3, 4, 2, 5, 6])
# تقسیم داده به آموزش و تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# ایجاد مدل
model = LinearRegression()
model.fit(X_train, y_train)
# پیشبینی
y_pred = model.predict(X_test)
# ارزیابی مدل
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse) در این مثال، ابتدا دادهها را با train_test_split به دو بخش آموزش و تست تقسیم میکنیم. سپس مدل LinearRegression ساخته و آموزش داده میشود. پیشبینی روی داده تست انجام شده و خطای میانگین مربعات (MSE) محاسبه میشود.
پیشپردازش دادهها
Scikit-Learn ابزارهای متنوعی برای آمادهسازی دادهها ارائه میدهد:
- StandardScaler: نرمالسازی دادهها به میانگین صفر و واریانس یک.
- MinMaxScaler: مقیاسبندی دادهها بین 0 و 1.
- OneHotEncoder: تبدیل دادههای دستهای به عددی.
- Imputer: پر کردن دادههای گمشده.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X) در اینجا، دادهها با استفاده از StandardScaler نرمال شده و آماده استفاده در مدل میشوند.
ارزیابی مدلها
Scikit-Learn معیارهای متعددی برای سنجش عملکرد مدلها دارد:
- Accuracy: برای دستهبندی
- Mean Squared Error (MSE): برای رگرسیون
- R² Score: برای رگرسیون
- Confusion Matrix: برای تحلیل دستهبندی
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
print("R² Score:", r2) مقدار R² نشان میدهد که چه میزان از تغییرات داده توسط مدل توضیح داده شده است.
انتخاب و بهینهسازی مدل
Scikit-Learn ابزارهای متنوعی برای تنظیم هایپرپارامترها و یافتن بهترین مدل دارد:
- GridSearchCV: جستجوی شبکهای برای بهترین ترکیب هایپرپارامترها
- RandomizedSearchCV: جستجوی تصادفی برای کاهش زمان محاسبات
- Cross-Validation: ارزیابی مدل با چندین تقسیمبندی دادهها
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svc = SVC()
clf = GridSearchCV(svc, parameters)
clf.fit(X_train, y_train)
print("Best parameters:", clf.best_params_) در این مثال، بهترین ترکیب هایپرپارامترهای مدل SVC با استفاده از GridSearchCV پیدا میشود.
بهترین شیوهها هنگام استفاده از Scikit-Learn
- همیشه دادهها را قبل از آموزش مدل پیشپردازش کنید.
- از تقسیم داده به آموزش و تست استفاده کنید تا از Overfitting جلوگیری شود.
- از Cross-Validation برای ارزیابی واقعیتر مدلها بهره ببرید.
- قبل از انتخاب نهایی مدل، چند الگوریتم مختلف را آزمایش کنید.
- مستندات رسمی Scikit-Learn را برای درک جزئیات الگوریتمها مطالعه کنید.
جمعبندی
کتابخانه Scikit-Learn با ارائه ابزارهای قدرتمند و ساده برای یادگیری ماشین، پیشپردازش دادهها و ارزیابی مدلها، یکی از بهترین انتخابها برای توسعهدهندگان و محققان داده است. استفاده صحیح از این کتابخانه میتواند زمان توسعه مدلها را به شدت کاهش دهد و نتایج دقیقتری ارائه کند.
آیا این مطلب برای شما مفید بود ؟




