Scikit Learn

سایکیت لرن چیست و چگونه آن را نصب کنیم؟ Scikit-Learn

آیا تا به حال به این فکر کرده اید که چگونه ایمیل های شما به طور خودکار از اسپم جدا می شوند؟ یا چگونه Netflix فیلم های مورد علاقه شما را پیشنهاد می دهد؟ پاسخ در یک کلمه نهفته است: یادگیری ماشین. این فناوری دنیای ما را دگرگون کرده است و امروزه در هر صنعتی از پزشکی گرفته تا مالی و سرگرمی کاربرد دارد.

اما سؤال اینجاست: چگونه می توانید وارد این دنیای هیجان انگیز شوید؟ پاسخ ساده است. با Scikit-Learn. این کتابخانه پایتون، دروازه ورود شما به دنیای یادگیری ماشین است. در این مقاله، شما خواهید آموخت که Scikit-Learn چیست، چه قابلیت هایی دارد و چگونه می توانید آن را روی سیستم خود نصب کنید.

Scikit-Learn چیست؟

Scikit-Learn یک کتابخانه متن باز یادگیری ماشین برای پایتون است. این کتابخانه روی NumPy، SciPy و Matplotlib ساخته شده است. David Cournapeau این پروژه را در سال 2007 به عنوان یک پروژه Google Summer of Code آغاز کرد. از آن زمان، جامعه ای بزرگ از توسعه دهندگان به آن پیوسته اند و آن را به یکی از محبوب ترین کتابخانه های یادگیری ماشین تبدیل کرده اند.

نام Scikit-Learn از ترکیب دو کلمه SciPy Toolkit Learn گرفته شده است. این نام نشان دهنده ریشه های علمی این کتابخانه است. Scikit-Learn تحت مجوز BSD-3-Clause منتشر می شود. این به این معناست که شما می توانید به صورت رایگان از آن در پروژه های شخصی و تجاری استفاده کنید.

ویژگی های کلیدی Scikit-Learn

Scikit-Learn ابزارهای ساده و کارآمدی برای تحلیل داده و مدل سازی ارائه می دهد. این کتابخانه شامل الگوریتم های متنوعی برای طبقه بندی، رگرسیون، خوشه بندی و کاهش بعد است.

  • یادگیری نظارت شده (Supervised Learning): الگوریتم هایی مانند رگرسیون لجستیک، درخت تصمیم، جنگل تصادفی و ماشین های بردار پشتیبان (SVM)
  • یادگیری غیرنظارت شده (Unsupervised Learning): الگوریتم های K-Means، DBSCAN و PCA برای خوشه بندی و کاهش بعد
  • پیش پردازش داده: ابزارهای مقیاس گذاری، کدگذاری و استخراج ویژگی
  • •انتخاب و ارزیابی مدل: اعتبارسنجی متقاطع، جستجوی شبکه ای و معیارهای ارزیابی

مفاهیم اصلی Scikit-Learn

قبل از نصب و استفاده از Scikit-Learn، باید با چند مفهوم کلیدی آشنا شوید. این مفاهیم پایه و اساس کار با این کتابخانه هستند.

الگوریتم های یادگیری نظارت شده

در یادگیری نظارت شده، شما داده های برچسب دار دارید. این یعنی هر نمونه ورودی با یک خروجی مشخص همراه است. هدف این است که مدل الگوها را یاد بگیرد و بتواند برای داده های جدید پیش بینی کند.

جدول زیر الگوریتم های اصلی یادگیری نظارت شده را نشان می دهد:

نوعالگوریتمکاربرد
طبقه بندیLogisticRegressionطبقه بندی دودویی و چندکلاسی
طبقه بندیRandomForestClassifierطبقه بندی با دقت بالا
طبقه بندیSVCطبقه بندی با حاشیه بیشینه
رگرسیونLinearRegressionپیش بینی مقادیر پیوسته
رگرسیونRidgeرگرسیون با منظم سازی L2

الگوریتم های یادگیری غیرنظارت شده

در یادگیری غیرنظارت شده، داده ها برچسب ندارند. مدل باید خودش الگوها و ساختارهای پنهان در داده ها را کشف کند. این روش برای خوشه بندی مشتریان، تشخیص ناهنجاری و کاهش بعد داده ها کاربرد دارد.

نصب Scikit-Learn

نصب Scikit-Learn بسیار ساده است. قبل از نصب، باید مطمئن شوید که Python نسخه 3.11 یا بالاتر روی سیستم شما نصب شده است. همچنین نیاز به NumPy (>= 1.24.1) و SciPy (>= 1.10.0) دارید.

روش اول: نصب با pip

pip ابزار استاندارد مدیریت بسته های پایتون است. این روش برای اکثر کاربران توصیه می شود:

pip install -U scikit-learn

پرچم -U باعث می شود آخرین نسخه نصب شود. اگر قبلاً سایکیت لرن را دارید، آن را به روزرسانی می کند.

روش دوم: نصب با conda

اگر از Anaconda یا Miniconda استفاده می کنید، می توانید Scikit-Learn را با conda نصب کنید:

conda install -c conda-forge scikit-learn

conda مزیت مدیریت وابستگی های باینری پیچیده را دارد. این ویژگی روی Windows بسیار مفید است.

تأیید نصب

پس از نصب، می توانید با اجرای کد زیر در پایتون، نصب را تأیید کنید:

import sklearnprint(sklearn.__version__)

اگر نصب موفقیت آمیز باشد، نسخه نصب شده Scikit-Learn چاپ می شود.

مثال: اولین مدل شما

حالا که Scikit-Learn را نصب کرده اید، بیایید یک مدل ساده بسازیم. این مثال یک طبقه بندی کننده رگرسیون لجستیک روی مجموعه داده Iris ایجاد می کند.

مرحله 1: وارد کردن کتابخانه ها

from sklearn import datasetsfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScalerfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score

مرحله 2: بارگذاری داده ها

iris = datasets.load_iris()X = iris.datay = iris.target

مرحله 3: تقسیم داده ها

X_train, X_test, y_train, y_test = train_test_split(    X, y, test_size=0.3, random_state=42)

مرحله 4: مقیاس گذاری ویژگی ها

scaler = StandardScaler()X_train = scaler.fit_transform(X_train)X_test = scaler.transform(X_test)

مرحله 5: آموزش مدل

model = LogisticRegression(max_iter=200)model.fit(X_train, y_train)

مرحله 6: ارزیابی مدل

y_pred = model.predict(X_test)accuracy = accuracy_score(y_test, y_pred)print(f'Accuracy: {accuracy:.4f}')

این کد دقت مدل را روی داده های تست چاپ می کند. معمولاً باید دقتی بالای 95% بگیرید.

یکپارچگی API در Scikit-Learn

یکی از بزرگترین نقاط قوت Scikit-Learn، API یکپارچه آن است. همه الگوریتم ها از یک الگوی مشابه پیروی می کنند. این سازگاری یادگیری و آزمایش را آسان می کند.

الگوی کلی در Scikit-Learn شامل چهار مرحله است:

  1. مقداردهی اولیه: model = Algorithm(parameters)
  2. آموزش: model.fit(X_train, y_train)
  3. پیش بینی: y_pred = model.predict(X_test)
  4. ارزیابی: score = model.score(X_test, y_test)

Pipeline: جلوگیری از نشت داده

یکی از خطاهای رایج در یادگیری ماشین، نشت داده (Data Leakage) است. این اتفاق وقتی می افتد که اطلاعات از داده های تست به مدل قبل از آموزش نشت می کند. Pipeline در Scikit-Learn این مشکل را حل می کند.

Pipeline مراحل پیش پردازش و مدل را در یک شیء واحد ترکیب می کند. این تضمین می کند که پیش پردازش فقط روی داده های آموزشی انجام شود.

from sklearn.pipeline import Pipelinepipe = Pipeline([    ('scaler', StandardScaler()),    ('classifier', LogisticRegression())])pipe.fit(X_train, y_train)predictions = pipe.predict(X_test)

ارزیابی مدل در Scikit-Learn

ارزیابی صحیح مدل برای موفقیت در پروژه های یادگیری ماشین ضروری است. Scikit-Learn معیارهای مختلفی برای ارزیابی ارائه می دهد.

معیارهای طبقه بندی

  • دقت (Accuracy): نسبت پیش بینی های صحیح به کل پیش بینی ها
  • صحت (Precision): نسبت پیش بینی های مثبت صحیح به کل پیش بینی های مثبت
  • بازخوانی (Recall): نسبت پیش بینی های مثبت صحیح به کل موارد مثبت واقعی
  • F1-Score: میانگین هماهنگ صحت و بازخوانی

اعتبارسنجی متقاطع

اعتبارسنجی متقاطع (Cross-Validation) روشی قوی برای ارزیابی مدل است. در K-Fold CV، داده ها به K بخش تقسیم می شوند. مدل K بار آموزش می بیند. هر بار یک بخش برای تست و بقیه برای آموزش استفاده می شوند.

from sklearn.model_selection import cross_val_scorescores = cross_val_score(model, X, y, cv=5)print(f'CV Accuracy: {scores.mean():.4f} (+/- {scores.std():.4f})')

تنظیم ابرپارامترها با GridSearchCV

هر الگوریتم پارامترهایی دارد که قبل از آموزش تنظیم می شوند. این ابرپارامترها عملکرد مدل را تحت تأثیر قرار می دهند. GridSearchCV بهترین ترکیب ابرپارامترها را به طور خودکار پیدا می کند.

from sklearn.model_selection import GridSearchCVparam_grid = {    'C': [0.1, 1, 10],    'kernel': ['rbf', 'linear']}grid = GridSearchCV(SVC(), param_grid, cv=5)grid.fit(X_train, y_train)print(f'Best params: {grid.best_params_}')

مقایسه با سایر کتابخانه ها

Scikit-Learn یکی از چندین کتابخانه یادگیری ماشین موجود است. درک تفاوت ها به شما کمک می کند ابزار مناسب را انتخاب کنید.

ویژگیScikit-LearnTensorFlowPyTorch
تمرکز اصلیML کلاسیکیادگیری عمیقیادگیری عمیق
منحنی یادگیریآسانتندمتوسط
پشتیبانی GPUمحدودگستردهگسترده
شبکه عصبیپایهپیشرفتهپیشرفته

Scikit-Learn برای یادگیری ماشین کلاسیک و داده های جدولی عالی است. اما برای یادگیری عمیق، TensorFlow یا PyTorch انتخاب بهتری هستند.

بهترین شیوه ها در Scikit-Learn

  • همیشه داده ها را تقسیم کنید: از train_test_split برای جدا کردن داده های آموزش و تست استفاده کنید
  • مقیاس گذاری کنید: ویژگی ها را با StandardScaler یا MinMaxScaler نرمال سازی کنید
  • از Pipeline استفاده کنید: برای جلوگیری از نشت داده و سازماندهی کد
  • اعتبارسنجی متقاطع انجام دهید: برای ارزیابی قوی تر مدل
  • ابرپارامترها را تنظیم کنید: با GridSearchCV یا RandomizedSearchCV

نتیجه گیری

Scikit-Learn یک کتابخانه قدرتمند و در عین حال ساده برای یادگیری ماشین است. API یکپارچه آن یادگیری را آسان می کند. مجموعه گسترده الگوریتم ها و ابزارهای پیش پردازش، آن را برای پروژه های واقعی ایده آل می سازد.

در این مقاله، شما با مفاهیم اصلی Scikit-Learn آشنا شدید. نصب این کتابخانه را یاد گرفتید. یک مدل ساده ساختید و با Pipeline، اعتبارسنجی متقاطع و GridSearchCV آشنا شدید.

حالا نوبت شماست. Scikit-Learn را نصب کنید. با داده های خود آزمایش کنید. مدل بسازید و ارزیابی کنید. دنیای یادگیری ماشین منتظر شماست.

امروز Scikit-Learn را نصب کنید و اولین مدل یادگیری ماشین خود را بسازید!

Mojtaba Zolfaghari

Passionate about Artificial Intelligence, Machine Learning, and Data Analysis. I have a strong foundation in programming and machine learning concepts, and I am constantly exploring new advancements in AI. My studies focus on both theoretical understanding and practical implementation, as I believe real-world applications are key to mastering this field. I enjoy working on projects that challenge my problem-solving skills and allow me to apply machine learning techniques effectively. Continuous learning and staying up-to-date with the latest AI trends are essential parts of my journey. I’m always open to discussions, collaborations, and opportunities to expand my expertise.


مطالب مرتبط

نظرات کاربران
ارسال دیدگاه