داده کاوی با پایتون _ طبقهبندی موضوع این مقاله و یکی از تکنیک های دیتا ماینینگ در ادامه آموزش داده کاوی با پایتون-آماده سازی و تصویرسازی داده ها
میباشد.
در فرآیند داده کاوی ابتدا مجموعه داده های بزرگ مرتب می شود سپس الگوها شناسایی و به کشف دانش ختم می شود.
دو نوع داده کاوی موجود است:
وجود دارد که تکنیک طبقه بندی یا Classification جز روش پیش بینی قرار دارد.
طبقه بندی با پیش بینی ساده ی آیا باران می آید یا نه، وام می گیرم یا نه، این گل مربوط به کدام دسته است، سقوط یا صعود بورس و …. شروع می شود.
هدف از کلاسیفیکیشن داده ها این است که با استفاده از دیتاست بعد از ایجاد یک مدل، بتوانیم با این مدل کلاس داده های جدید را پیش بینی کنیم .
طبقه بندی، یک روش داده کاوی است که نمونه هایی را در یک مجموعه داده به کلاس های هدف اختصاص می دهد. مدل هایی که این روش را پیاده سازی می کنند طبقه بندی کننده نامیده می شوند. این روش دارای دو مرحله است:
طبقه بندی به عنوان یکی از تکنیک های دیتا ماینینگ برای پیش بینی وضعیت داده های جدید در رده های متفاوت شناخته می شود. به عبارت دیگر در این تکنیک الگوریتم ابتدا در مرحله آموزش یک مدل یاد میگیرد و سپس در مرحله ارزیابی، کارایی مدل فرا گرفته شده بررسی میشود.
در دنیای ما، اگر درگیر یافتن پاسخ سوالی باشیم، منابع گوناگونی از جمله اساتید، کتب اینترنت و … به کمک ما می آیند و به ما در فهم آن سوال آموزش می دهند.
در دنیای کامپیوتر دو روش برای یادگیری وجود دارد که طبقه بندی جز یادگیری با نظارت است:
فرایند طبقه بندی به این صورت است که براساس یک مجموعه آموزشی سیستم یاد می گیرد داده ها را به رده های درست با بیشترین دقت تقسیم بندی کند.
با توجه به دیتاست استفاده شده در این آموزش iris ، حدود ۱۵۰ نمونه داریم که حدود ۶۰ درصد آنها را آموزش (Train) میدهیم و حدود ۴۰ درصد آنها را برای تست (Test) و پیش بینی استفاده می کنیم.
برای درک مفهوم طبقه بندی، دیتا ست iris با ۱۵۰ نمونه را در نظر بگیرید. ما می خواهیم ببینیم یک نمونه ی جدیدی از این گل مربوط به کدام دسته ی ستوس، ورسی کلر و ویرجینیا تعلق دارد.
ویژگی های دیتا ست Iris :
و کلاسهای هدف برای پیش بینی :
هر نمونه از دیتاست یک ردیف یا رکورد نامیده میشود. همچنین حداقل ۲ ستون که یکی برای قرار دادن ویژگی نمونه و یکی هم برای کلاس یا طبقه که مشخص میکند هر نمونه مربوط به کدام کلاس است. به ستون ویژگی بعد هم گفته میشود به عنوان مثال دیتاست ایریس دارای ۴ بعد و۳ طبقه است.
طبقه | sepal length طول کاسبرگ |
sepal width عرض کاسبرگ |
petal length طول گلبرگ |
petal widthعرض گلبرگ |
Setosa | ۵٫۱ | ۳٫۵ | ۱٫۴ | ۰٫۲ |
مفهوم طبقه بندی از ستون کلاس یاطبقه گرفته شده است.
از انواع طبقه بندی می توان به موارد زیر اشاره کرد:
sklearn شامل پیادهسازی مدلهای زیادی برای طبقهبندی است و در این بخش نحوه استفاده از Gaussian Naive Bayes را برای شناسایی گلهای زنبق به نام های
می پردازیم.در ابتدا ورژن پایتون خود را برنامه نویسی بررسی کنید
!python -Vاگر از پایتون ۳ استفاده میکنید از قطعه کد زیر استفاده کنید تا به دیتا ست iris هم دسترسی و هم آن را مشاهده کنید.
import urllib.request url= urllib.request.urlopen('http://aima.cs.berkeley.edu/4th-ed/data/iris.csv') show =url.read().decode('utf-8') print(show)با استفاده از مجموعه دادهای که در بالا بارگذاری کردیم، دیتاست iris را به سه دسته تقسیم می کنیم. برای این منظور بردار رشته هایی که کلاس را در خود دارند به اعداد صحیح تبدیل می کنیم:
t = zeros(len(target)) t[target == 'setosa'] = 1 t[target == 'versicolor'] = 2 t[target == 'virginica'] = 3]اکنون ما آماده ایم تا طبقه بندی کننده خود را نمونه سازی و آموزش دهیم:
from sklearn.naive_bayes import GaussianNB classifier = GaussianNB() classifier.fit(data,t) # آموزش دیتا ست ایریسطبقه بندی را می توان با روش پیش بینی انجام داد و آزمایش آن با یکی از نمونه ها آسان است:
t = zeros(len(target)) t[target == 'setosa'] = 1 t[target == 'versicolor'] = 2 t[target == 'virginica'] = 3 from sklearn.naive_bayes import GaussianNB classifier = GaussianNB() classifier.fit(data,t) # آموزش بر روی دیتاست irisprint (t[0])در این مورد، کلاس پیشبینیشده برابر با کلاس صحیح (setosa) است، اما مهم است که طبقهبندیکننده را در طیف وسیعتری از نمونهها ارزیابی کنیم و آن را با دادههایی که در فرآیند آموزش استفاده نشده است، آزمایش کنیم.
برای این منظور، دادهها را به مجموعه آموزش مجموعه آزمایش تقسیم میکنیم و نمونههایی را بهطور تصادفی از مجموعه داده اصلی انتخاب میکنیم. ما از مجموعه اول برای آموزش طبقه بندی کننده و از مجموعه دوم برای آزمایش طبقه بندی کننده استفاده می کنیم. تابع train_test_split می تواند این کار را برای ما انجام دهد:
from sklearn.model_selection import train_test_split train, test, t_train, t_test = train_test_split(data, t,test_size=0.4, random_state=0)مجموعه داده تقسیم شده است و اندازه آزمون ۴۰٪ از اندازه اصلی است که با پارامتر test_size مشخص شده است. با این داده ها می توانیم دوباره طبقه بندی کننده را آموزش دهیم و دقت آن را چاپ کنیم:
classifier.fit(train,t_train) # آموزش print (classifier.score(test,t_test)) # آزموندر این مورد ما ۹۳ درصد دقت داریم. دقت یک طبقهبندی بر اساس تعداد نمونههای طبقهبندی شده صحیح بر تعداد کل نمونههای طبقهبندیشده به دست میآید. به عبارت دیگر، به این معنی است که نسبت تعداد کل پیشبینیهایی است که درست بودهاند.
ابزار دیگری برای تخمین عملکرد یک طبقه بندی کننده، ماتریس سردرگمی است. در این ماتریس، هر ستون نمونههای یک کلاس پیشبینیشده را نشان میدهد، در حالی که هر ردیف نشاندهنده نمونههای یک کلاس واقعی است. با استفاده از معیارهای ماژول، محاسبه و چاپ ماتریس بسیار آسان است:
دیدگاهتان را بنویسید
سلام
من فقط میخواستم از سایت خوبتون و بخصوص کانال عالیتون تشکر کنم..ممنون
سلام. خواهش میکنم. امیدوارم مفید بوده باشه.
موفق باشید.