هوش مصنوعی با پایتون – بخش پنجم – یادگیری نظارتشده : طبقهبندی
با استفاده از موارد فوق میخواهیم یک مدل یادگیری ماشینِ Naïve Bayes بسازیم تا از اطلاعات تومور بهمنظور تشخیص خوشخیم یا بدخیم بودن آن استفاده شود. برای شروع باید ماژول sklearn را نصب کنیم. این کار را میتوان با دستور زیر انجام داد:
Import Sklearn
حال باید دیتاستی را به نام پایگاه داده سرطان سینه ویسکانسین import کنیم:
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’]
اکنون دستور زیر نشان خواهد داد که آنها به مقادیر 0 و 1 نگاشت شدهاند. در اینجا 0 نشاندهنده تومور بدخیم و 1 نشاندهنده تومور خوشخیم است. خروجی در زیر نشان داده شده است:
print(labels[0])
0
دو دستور زیر نام ویژگیها و مقادیر ویژگیها را تولید میکند.
print(feature_names[0])
mean radius
print(features[0])
[1.79900000e+01 1.03800000e+01 1.22800000e+02 1.00100000e+03
1.18400000e-01 2.77600000e-01 3.00100000e-01 1.47100000e-01
2.41900000e-01 7.87100000e-02 1.09500000e+00 9.05300000e-01
8.58900000e+00 1.53400000e+02 6.39900000e-03 4.90400000e-02
5.37300000e-02 1.58700000e-02 3.00300000e-02 6.19300000e-03
2.53800000e+01 1.73300000e+01 1.84600000e+02 2.01900000e+03
1.62200000e-01 6.65600000e-01 7.11900000e-01 2.65400000e-01
4.60100000e-01 1.18900000e-01]
از خروجی فوق میتوانیم مشاهده کنیم که اولین نمونه دادهها یک تومور بدخیم است که شعاع اصلی آن 1.790000e + 01 است. برای آزمایش مدل خود بر روی دادههای دیده نشده باید دادههای خود را به دادههای آموزشی و آزمایشی تقسیم کنیم. این کار با کمک کد زیر قابل انجام است:
from sklearn.model_selection import train_test_split
دستور فوق تابع train_test_split را از پکیج sklearn وارد میکند و دستور زیر دادهها را به دادههای مربوط به آموزش و آزمایش تقسیم میکند. در مثال زیر ما از 40% از دادهها برای آزمایش استفاده میکنیم و دادههای باقیمانده برای آموزش مدل استفاده میشود. کد زیر این کار را انجام میدهد:
train, test, train_labels, test_labels =
train_test_split(features,labels,test_size = 0.40, random_state = 42)
حالا ما مدل را با استفاده از دستورات زیر میسازیم:
from sklearn.naive_bayes import GaussianNB
دستور فوق ماژول GaussianNB را وارد میکند. حال با دستور داده شده در زیر، ما باید مدل را مقداردهی اولیه کنیم.
gnb = GaussianNB()
ما مدل را در دادهها با استفاده از gnb.fit() آموزش خواهیم داد.
model = gnb.fit(train, train_labels)
اکنون مدل را با ایجاد پیشبینی روی دادههای آزمایشی ارزیابی میکنیم و این کار میتواند همانگونه که در ادامه میآید به انجام برسد.
preds = gnb.predict(test)
print(preds)
[1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1
0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0
0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0
0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 0
1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0
1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0
1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0
1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1 0 1]
سری فوق که از 0 و 1 تشکیلشده مقادیر پیشبینیشده برای کلاسهای تومور یعنی 0 و 1 است. اکنون با مقایسه دو آرایه یعنی test_lebels و preds میتوان به صحت مدل خود پی برد. برای تعیین صحت از تابع accuracy_score() استفاده میکنیم. دستورات زیر را در نظر بگیرید:
from sklearn.metrics import accuracy_score
print(accuracy_score(test_labels,preds))
0.951754385965
نتیجه نشان میدهد که طبقهبندی کننده Naïve Bayes دقتی برابر با 95.17% دارد. این طبقهبندی کننده یادگیری ماشینی است که بر اساس مدل Naïve Bayse Gaussian است.
بخشهای دیگر مقاله را از لینکهای زیر بخوانید:
هوش مصنوعی با پایتون – بخش پنجم – یادگیری نظارتشده : طبقهبندی (قسمت اول)
هوش مصنوعی با پایتون – بخش پنجم – یادگیری نظارتشده : طبقهبندی (قسمت دوم)
هوش مصنوعی با پایتون – بخش پنجم – یادگیری نظارتشده : طبقهبندی (قسمت چهارم)
هوش مصنوعی با پایتون – بخش پنجم – یادگیری نظارتشده : طبقهبندی (قسمت پنجم)
هوش مصنوعی با پایتون – بخش پنجم – یادگیری نظارتشده : طبقهبندی (قسمت آخر)