آموزش طبقه بندی در یادگیری ماشین با پایتون

3 سال پیش

آموزش طبقه بندی در یادگیری ماشین با پایتون

 

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش طبقه بندی در یادگیری ماشین با پایتون خواهیم پرداخت.

پیشنهاد ویژه : آموزش طراحی وب سایت با پایتون

مقدمه ای بر طبقه بندی در یادگیری ماشین با پایتون

طبقه بندی ممکن است به عنوان فرآیند پیش بینی کلاس یا دسته از مقادیر مشاهده شده یا داده های داده شده تعریف شود. خروجی طبقه بندی شده می تواند شکلی مانند “سیاه” یا “سفید” یا “هرزنامه” یا “بدون هرزنامه” داشته باشد.

از نظر ریاضی طبقه بندی وظیفه تقریبی یک تابع نقشه برداری (f) از متغیرهای ورودی (X) به متغیرهای خروجی (Y) است. این اساساً مربوط به یادگیری ماشین تحت نظارت است که در آن اهداف همراه با مجموعه داده های ورودی نیز ارائه می شود.

یک نمونه از مشکلات طبقه بندی می تواند شناسایی هرزنامه در ایمیل ها باشد. فقط دو دسته خروجی می تواند وجود داشته باشد: “هرزنامه” و “بدون هرزنامه”. بنابراین این یک طبقه بندی باینری است.

برای اجرای این طبقه بندی، ابتدا باید طبقه بندی کننده را آموزش دهیم. برای این مثال ، ایمیل های “هرزنامه” و “بدون هرزنامه” به عنوان داده های آموزش استفاده می شود. پس از آموزش موفقیت آمیز طبقه بندی ، می توان از آن برای شناسایی یک ایمیل ناشناخته استفاده کرد.

انواع فراگیرها در طبقه بندی

ما برای مشکلات طبقه بندی دو نوع فراگیر داریم –

فراگیر تنبل

همانطور که از نامش پیداست ، این نوع از فراگیران پس از ذخیره اطلاعات آموزش، منتظر می مانند تا داده های تست ظاهر شود. طبقه بندی فقط پس از دریافت اطلاعات آزمایش انجام می شود. آنها زمان کمتری را برای آموزش می گذرانند اما زمان بیشتری را برای پیش بینی صرف می کنند. نمونه هایی از یادگیرندگان تنبل، نزدیکترین همسایه K و استدلال مبتنی بر مورد هستند.

فراگیر مشتاق

برخلاف یادگیرندگان تنبل ، فراگیران مشتاق مدل طبقه بندی را بدون انتظار برای نشان دادن داده های آزمون پس از ذخیره اطلاعات آموزش ، می سازند. آنها وقت بیشتری را برای آموزش می گذرانند اما زمان کمتری را برای پیش بینی صرف می کنند. نمونه هایی از فراگیران مشتاق ، درختان تصمیم ، بایز ساده و شبکه های عصبی مصنوعی (ANN) هستند.

ساخت یک طبقه بندی در پایتون

Scikit-learn ، از کتابخانه پایتون برای یادگیری ماشین می توان برای ساخت طبقه بندی در پایتون استفاده کرد. مراحل ساخت یک طبقه بندی در پایتون به شرح زیر است –

مرحله ۱: وارد کردن بسته پایتون لازم

برای ساخت یک طبقه بندی با استفاده از scikit-learn ، باید آن را وارد کنیم. با استفاده از اسکریپت زیر می توانیم آن را وارد کنیم –

import sklearn

 

مرحله ۲: وارد کردن مجموعه داده

پس از وارد کردن بسته لازم، برای ساخت مدل پیش بینی طبقه بندی به یک مجموعه داده نیاز داریم. ما می توانیم آن را از مجموعه داده های sklearn وارد کنیم یا طبق نیاز خود از یکی دیگر استفاده کنیم. ما قصد داریم از پایگاه داده تشخیصی sklearn’s Breast Cancer Wisconsin استفاده کنیم. ما می توانیم آن را با کمک اسکریپت زیر وارد کنیم –

from sklearn.datasets import load_breast_cancer

 

اسکریپت زیر مجموعه داده را بارگیری می کند.

data = load_breast_cancer ()

 

ما همچنین باید داده ها را سازماندهی کنیم و می توان آنها را با کمک اسکریپت های زیر انجام داد –

label_names = data['target_names']
   labels = data['target']
   feature_names = data['feature_names']
   features = data['data']

 

دستور زیر نام برچسب ها ، “بدخیم” و “خوش خیم” را در صورت پایگاه داده ما چاپ می کند.

print(label_names)

 

خروجی دستور بالا نام برچسب ها است –

['malignant' 'benign']

 

این برچسب ها به مقادیر دودویی ۰ و ۱ ترسیم می شوند. سرطان بدخیم با ۰ و سرطان خوش خیم با ۱ نشان داده می شود.

نام ویژگی ها و مقادیر ویژگی این برچسب ها با کمک دستورات زیر قابل مشاهده است –

print(feature_names[0])

 

خروجی دستور بالا نام ویژگی های برچسب ۰ یعنی سرطان بدخیم است –

mean radius

 

به طور مشابه، نام ویژگی های برچسب را می توان به شرح زیر تولید کرد –

print(feature_names[1])

 

خروجی دستور بالا نام ویژگی های برچسب ۱ یعنی سرطان خوش خیم است –

mean texture

 

ما می توانیم ویژگی های این برچسب ها را با کمک دستور زیر چاپ کنیم –

print(features[0])

 

این خروجی زیر را ایجاد می کند –

[
۱٫۷۹۹e + 01 1.038e + 01 1.228e + 02 1.001e + 03 1.184e-01 2.776e-01 3.001e-01
۱٫۴۷۱e-01 2.419e-01 7.871e-02 1.095e + 00 9.053e-01 8.589e + 00 1.534e + 02
۶٫۳۹۹e-03 4.904e-02 5.373e-02 1.587e-02 3.003e-02 6.193e-03 2.538e + 01
۱٫۷۳۳e + 01 1.846e + 02 2.019e + 03 1.622e-01 6.656e-01 7.119e-01 2.654e-01
۴٫۶۰۱e-01 1.189e-01
]

 

ما می توانیم ویژگی های این برچسب ها را با کمک دستور زیر چاپ کنیم –

چاپ (ویژگی های [۱

print(features[1])

 

این خروجی زیر را ایجاد می کند –

[
   ۲٫۰۵۷e+01 1.777e+01 1.329e+02 1.326e+03 8.474e-02 7.864e-02 8.690e-02
   ۷٫۰۱۷e-02 1.812e-01 5.667e-02 5.435e-01 7.339e-01 3.398e+00 7.408e+01
   ۵٫۲۲۵e-03 1.308e-02 1.860e-02 1.340e-02 1.389e-02 3.532e-03 2.499e+01
   ۲٫۳۴۱e+01 1.588e+02 1.956e+03 1.238e-01 1.866e-01 2.416e-01 1.860e-01
   ۲٫۷۵۰e-01 8.902e-02
]

 

مرحله ۳: سازماندهی داده ها در مجموعه های آموزش و تست

همانطور که باید مدل خود را بر روی داده های دیده نشده آزمایش کنیم ، مجموعه داده خود را به دو قسمت تقسیم خواهیم کرد: یک مجموعه آموزش و یک مجموعه آزمون. ما می توانیم از تابع ()train_test_split  بسته sklearn python برای تقسیم داده ها به مجموعه ها استفاده کنیم. دستور زیر تابع را وارد می کند –

from sklearn.model_selection import train_test_split

 

اکنون، دستور بعدی داده ها را به داده های آموزش و تست تقسیم می کند. در این مثال ، ما از ۴۰ درصد داده ها برای هدف آزمایش و ۶۰ درصد از داده ها برای اهداف آموزشی استفاده می کنیم –

train, test, train_labels, test_labels = train_test_split(
   features,labels,test_size = 0.40, random_state = 42
)

 

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

پس از تقسیم داده ها به آموزش و تست، ما باید مدل را بسازیم. برای این منظور از الگوریتم Naïve Bayes استفاده خواهیم کرد. دستورات زیر ماژول GaussianNB را وارد می کنند –

from sklearn.naive_bayes import GaussianNB

 

اکنون ، مدل را به صورت زیر مقدار دهی اولیه کنید –

gnb = GaussianNB()

 

بعد ، با کمک دستور زیر می توانیم مدل را آموزش دهیم –

model = gnb.fit(train, train_labels)

 

اکنون ، برای ارزیابی باید پیش بینی کنیم. با استفاده از تابع ()predict  به شرح زیر می توان این کار را انجام داد –

preds = gnb.predict(test)
print(preds)

 

این خروجی زیر را ایجاد می کند –

[
   ۱ ۰ ۰ ۱ ۱ ۰ ۰ ۰ ۱ ۱ ۱ ۰ ۱ ۰ ۱ ۰ ۱ ۱ ۱ ۰ ۱ ۱ ۰ ۱ ۱ ۱ ۱ ۱ ۱ ۰ ۱ ۱ ۱ ۱ ۱ ۱ ۰ ۱
   ۰ ۱ ۱ ۰ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۰ ۰ ۱ ۱ ۱ ۱ ۱ ۰ ۰ ۱ ۱ ۰ ۰ ۱ ۱ ۱ ۰ ۰ ۱ ۱ ۰ ۰ ۱ ۰ ۱ ۱
   ۱ ۱ ۱ ۱ ۰ ۱ ۱ ۰ ۰ ۰ ۰ ۰ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۰ ۰ ۱ ۰ ۰ ۱ ۰ ۰ ۱ ۱ ۱ ۰ ۱ ۱ ۰ ۱ ۱ ۰
   ۰ ۰ ۱ ۱ ۱ ۰ ۰ ۱ ۱ ۰ ۱ ۰ ۰ ۱ ۱ ۰ ۰ ۰ ۱ ۱ ۱ ۰ ۱ ۱ ۰ ۰ ۱ ۰ ۱ ۱ ۰ ۱ ۰ ۰ ۱ ۱ ۱ ۱
   ۱ ۱ ۱ ۱ ۰ ۰ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۰ ۱ ۱ ۱ ۰ ۱ ۱ ۰ ۱ ۱ ۱ ۱ ۱ ۱ ۰ ۰ ۰ ۱ ۱ ۰ 
   ۱ ۰ ۱ ۱ ۱ ۱ ۰ ۱ ۱ ۰ ۱ ۱ ۱ ۰ ۱ ۰ ۰ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۱ ۰ ۱ ۱ ۱ ۱ ۱ ۰ ۱ ۰ ۰ ۱ ۱ ۰ 
   ۱

]

 

سری فوق ۰ و ۱ خروجی مقادیر پیش بینی شده برای گروه های تومور بدخیم و خوش خیم است.

مرحله ۵: اندازه گیری دقت

ما می توانیم با مقایسه دو آرایه یعنی test_labels و preds ، دقت ساخت مدل را در مرحله قبل دریابیم. ما برای تعیین صحت از تابع () precision_score  استفاده خواهیم کرد.

from sklearn.metrics import accuracy_score
   print(accuracy_score(test_labels,preds))
   ۰٫۹۵۱۷۵۴۳۸۵۹۶۵

 

خروجی فوق نشان می دهد که طبقه بندی NaïveBayes 95.17٪ دقیق است.

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

این کار حتی اگر اجرای برنامه یا مدل یادگیری ماشین خود را به پایان رسانده باشید، انجام نمی شود. ما باید بدانیم که مدل ما چقدر موثر است؟ معیارهای ارزیابی متفاوتی می تواند وجود داشته باشد ، اما ما باید آن را با دقت انتخاب کنیم زیرا انتخاب معیارها بر نحوه اندازه گیری و مقایسه عملکرد الگوریتم یادگیری ماشین تأثیر می گذارد.

در زیر برخی از معیارهای مهم ارزیابی طبقه بندی وجود دارد که می توانید براساس داده و نوع مشکل خود انتخاب کنید –

ماتریس در هم ریختگی

این ساده ترین راه برای اندازه گیری عملکرد یک مشکل طبقه بندی است که در آن خروجی می تواند از دو یا چند نوع کلاس باشد. ماتریس در هم ریختگی چیزی نیست جز یک جدول با دو بعد یعنی. “واقعی” و “پیش بینی شده” و بعلاوه ، هر دو بعد دارای “مثبت مثبت (TP)” ، “منفی واقعی (TN)” ، “مثبت کاذب (FP)” ، “منفی کاذب (FN)” هستند.

توضیح اصطلاحات مرتبط با ماتریس در هم ریختگی به شرح زیر است –

  • مثبت های واقعی (TP) – این مورد زمانی است که هر دو کلاس واقعی و کلاس پیش بینی شده از نقطه داده ۱ باشد.
  • منفی های واقعی (TN) – این مورد زمانی است که هر دو کلاس واقعی و کلاس پیش بینی شده داده ها ۰ باشد.
  • مثبت کاذب (FP) – این موردی است که کلاس واقعی نقطه داده ۰ و کلاس پیش بینی شده نقطه ۱ باشد.
  • منفی های کاذب (FN) – این مورد زمانی است که کلاس واقعی نقطه داده ۱ و کلاس پیش بینی شده نقطه ۰ باشد.

ما می توانیم ماتریس در هم ریختگی را با کمک تابع()confusion_matrix در sklearn پیدا کنیم. با کمک اسکریپت زیر می توان ماتریس در هم ریختگی طبقه بندی باینری ساخته شده را پیدا کرد –

from sklearn.metrics import confusion_matrix

 

خروجی

 

[
   [ ۷۳   ۷]
   [  ۴ ۱۴۴]
]

 

صحت

این ممکن است به عنوان تعداد پیش بینی های صحیح ساخته شده توسط مدل ML ما تعریف شود. ما می توانیم به راحتی با کمک فرمول زیر آن را با ماتریس در هم ریختگی محاسبه کنیم –

 

Accuracy=TP+TNTP+FP+FN+TN

برای طبقه بندی باینری ساخته شده در بالا ، TP + TN = 73 + 144 = 217 و TP + FP + FN + TN = 73 + 7 + 4 + 144 = 228.

از این رو ، Accuracy = 217/228 = 0.951754385965 که همان محاسبه ما پس از ایجاد طبقه بندی باینری است.

دقت

دقت، مورد استفاده در بازیابی اسناد ممکن است به عنوان تعداد اسناد صحیح برگردانده شده توسط مدل ML ما تعریف شود. ما می توانیم به راحتی با کمک فرمول زیر آن را با ماتریس سردرگمی محاسبه کنیم –

Precision=TPTP+FP
برای طبقه بندی باینری ساخته شده در بالا ، TP = 73 و TP + FP = 73 + 7 = 80.

از این رو ، دقت = ۷۳/۸۰ = ۰٫۹۱۵

 

یادآوری یا حساسیت

یادآوری ممکن است به عنوان تعداد مثبت برگردانده شده توسط مدل ML ما تعریف شود. ما می توانیم به راحتی با کمک فرمول زیر آن را با ماتریس سردرگمی محاسبه کنیم –

recall=TPTP+FN

برای طبقه بندی باینری ساخته شده در بالا ، TP = 73 و TP + FN = 73 + 4 = 77.

از این رو ، دقت = ۷۳/۷۷ = ۰٫۹۴۸۰۵

اختصاصی

برخلاف یادآوری ، ممکن است به عنوان تعداد منفی برگردانده شده توسط مدل ML ما تعریف شود. ما می توانیم به راحتی با کمک فرمول زیر آن را با ماتریس سردرگمی محاسبه کنیم –

Specificity=TNTN+FP
برای طبقه بندی باینری ساخته شده در بالا ، TN = 144 و TN + FP = 144 + 7 = 151.

از این رو ، دقت = ۱۴۴/۱۵۱ = ۰٫۹۵۳۶۴

الگوریتم های مختلف طبقه بندی ML

موارد زیر چند الگوریتم مهم طبقه بندی ML هستند –

  • رگرسیون لجستیک
  • پشتیبانی از ماشین بردار (SVM)
  • درخت تصمیم
  • Naïve Bayes
  • جنگل تصادفی

 

برنامه های کاربردی

برخی از مهمترین کاربردهای الگوریتم های طبقه بندی به شرح زیر است:

  • تشخیص گفتار
  • تشخیص دست خط
  • شناسایی بیومتریک
  • طبقه بندی اسناد

 

منبع.

 

لیست جلسات قبل آموزش یادگیری ماشین با پایتون 

  1. آموزش یادگیری ماشین با پایتون
  2.  مبانی یادگیری ماشین با پایتون  
  3. آموزش اکوسیستم یادگیری ماشین با پایتون 
  4. آموزش متدها در یادگیری ماشین با پایتون 
  5. آموزش بارگیری داده ها برای پروژه های یادگیری ماشین
  6. آموزش درک داده ها با آمار در یادگیری ماشین
  7. آموزش آماده سازی داده ها در یادگیری ماشین با پایتون 
  8. آموزش انتخاب ویژگی داده ها در یادگیری ماشین با پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه