در آموزش داده کاوی با پایتون-آماده سازی و تصویرسازی قرار است با استفاده از زبان برنامه نویسی پایتون و مثال معروف داده های زنبق (iris)، داده ها را آماده و برای ساده تر شدن تجزیه و تحلیل آنها را به تصویر بکشیم.
هر موضوع با نمونههای کد مبتنی بر چهار کتابخانه اصلی پایتون برای تجزیه و تحلیل و دستکاری دادهها پوشش داده میشود:
در مقاله داده کاوی با پایتون-Datamining به صورت مفصل در مورد مفهوم داده کاوی بحث کردم و همچنین در آموزش داده کاوی با پایتون-روش الگوریتم CRISP در مورد الگوریتم کریسپ توضیح دادیم.
اولین مرحله از داده کاوی وارد کردن (Importing) و تجسم داده ها (Visualization) می باشد.
بنابراین در ابتدا به تجزیه و تحلیل داده ها که شامل بدست آوردن و بارگذاری داده ها در محیط کار است می پردازیم.
دیتاست مورد استفاده در این آموزش، شامل ۵۰ نمونه از هر یک از ۳ نوع گل زنبق setosa ،virginica و versicolor که جمعا ۱۵۰(۵۰*۳) نمونه میشوند، میباشد.
مجموعه ی دادهها به صورت سی اس وی (csv) که با کاما از هم جدا میشوند. همچنین شامل ۵ ستون میباشند که ۴ ستون اول ویژگیها و ستون آخر کلاس نمونه ما میباشد.
ویژگی ها، با اسم های دیگری مثل ورودی، متغیر مستقل و متغیر پیش بینی نیز شناخته می شوند.در این مثال Sepal length , Sepal width , Petal length , Petal width ورودی ها می باشند.
کلاسها، نیز با نام های دیگری مانند خروجی ها، تارگت، متغیر وابسته یا پاسخ شناخته می شوند که در این مثال
setosa ،virginica و versicolor خروجی های ما می باشند.
یکی از مواردی که برای داده کاوی مهمه،بحث شناخت کسب و کار و فرایندهای آن میباشد. اگر ما شناخت کافی در مورد داده ها نداشته باشیم نمیتوانیم نظری هم در مورد آنها بدهیم.
در این تصویر، ۴ ویژگی (طول و عرض کاسبرگ و گلبرگ گل ها) و کلاس ها به خوبی نمایش داده شده است.
معمولا اولین مرحله از تجزیه و تحلیل داده ها، شامل جمع آوری و لود داده ها در محیط کاری می شود. ما می توانیم به راحتی با استفاده از قابلیتهای Python این کار را انجام دهیم:
import urllib2 url = 'http://aima.cs.berkeley.edu/data/iris.csv' u = urllib2.urlopen(url) localFile = open('iris.csv', 'w') localFile.write(u.read()) localFile.close()
در قسمت بالا از کتابخانه urllib2 برای دسترسی به یک فایل در وب سایت دانشگاه برکلی استفاده و آن را در دیسک ذخیره کردیم. این فایل حاوی دیتاست iris است . CSV به راحتی میتواند با استفاده از تابع genfromtxt از کتابخانه numpy تجزیه و تحلیل کند.
from numpy import genfromtxt, zeros # read the first 4 columns data = genfromtxt('iris.csv',delimiter=',',usecols=(0,1,2,3)) # read the fifth column target = genfromtxt('iris.csv',delimiter=',',usecols=(4),dtype=str)
در این مثال یک ماتریس از ویژگی ها و یک بردار که شامل کلاسها است ایجاد کردیم.
میتوانیم اندازه دیتا ست را به شکل ساختار داده بارگذاری و تایید کنیم:
print data.shape (۱۵۰, ۴) print target.shape (۱۵۰,)
همچنین میتوانیم از نام کلاس ها و تعداد آنها مطلع شویم:
print set(target) # build a collection of unique elements (set(['setosa', 'versicolor', 'virginica']
یک وظیفه مهم هنگام کار با داده های جدید این است که بفهمیم داده ها دارای چه اطلاعاتی هستند و چه ساختاری دارند.
تجسم و تصویر سازی یا Visualization به ما کمک میکند تا این اطلاعات را به صورت گرافیکی کشف کنیم. با استفاده از plot از کتابخانه pylab که اینترفیسی به matplotlib است،
میتوانیم یک رسم نمودار دو بعدی داشته باشیم که ما را قادر به تجزیه و تحلیل دو بعد از دیتاست میکند و مقادیر یک ویژگی را در برابر مقادیر دیگری تحلیل میکند:
from pylab import plot, show plot(data[target=='setosa',0],data[target=='setosa',2],'bo') plot(data[target=='versicolor',0],data[target=='versicolor',2],'ro') plot(data[target=='virginica',0],data[target=='virginica',2],'go') show()
همانطور که در قطعه کد بالا مشاهده میکنیم از دو بعد اول وسوم (طول و عرض کاسبرگ) استفاده شده است. و نتیجه آن در شکل زیر مشاهده میشود:
در این گراف حدود ۱۵۰ تا نقطه و سه رنگ برا ی نشان دادن کلاسها داریم.
نقطه های آبی نشان دهنده نمونه ای از نمونه ی setosa، قرمز versicolor و سبز نشان دهنده virginica
یکی دیگر از روش های معمول برای مشاهده داده ها این است که هیستوگرامی از یکی از ویژگی ها را رسم کنیم.
در این مورد، از آنجا که داده ها به سه کلاس تقسیم می شوند، ما می توانیم توزیع ویژگی های مورد بررسی را برای هر کلاس مقایسه کنیم.
با کد زیر می توان توزیع اولین ویژگی داده های ما (طول sepal) را برای هر کلاس توزیع کرد:
from pylab import figure, subplot, hist, xlim, show xmin = min(data[:,0]) xmax = max(data[:,0]) figure() subplot(411) # distribution of the setosa class (1st, on the top) hist(data[target=='setosa',0],color='b',alpha=.7) xlim(xmin,xmax) subplot(412) # distribution of the versicolor class (2nd) hist(data[target=='versicolor',0],color='r',alpha=.7) xlim(xmin,xmax) subplot(413) # distribution of the virginica class (3rd) hist(data[target=='virginica',0],color='g',alpha=.7) xlim(xmin,xmax) subplot(414) # global histogram (4th, on the bottom) hist(data[:,0],color='y',alpha=.7) xlim(xmin,xmax) show()
به عنوان مثال ما مشاهده میکنیم که میانگین گل setosa، طول کاسبرگ کوچکتری نسبت بهvirginica دارند.
https://dzone.com
سلام سپاسگزارم
سلام سپاس
ممنونم خیلی مفید بود
ممنونم خیلی مفید بود
سلام.دوستان میشه یه توضیح مختصر بهم بدید..دیسپلی ساعت پژو۲۰۶رو دیدید که..میخام بدونم چجوری اطلاعات بصورت تصویر روی این دیسپلی میاد؟مثلا…