در آموزش داده کاوی با پایتون-آماده سازی و تصویرسازی داده ها با مثال معروف داده های زنبق(iris) ادامه میدهیم و به تحلیل داده با پایتون میپردازیم.
ویژگیها (ورودی ها ، متغیر مستقل، متغیر پیش بین ):
Sepal length , Sepal width , Petal length , Petal width.
کلاسها(خروجی ها ، تارگت، متغیر وابسته یا پاسخ) :
setosa،virginica و versicolor
datamining-python-iris
یکی از مواردی که برای داده کاوی مهمه،بحث شناخت کسب و کار و فرایندهای آن میباشد. اگر ما شناخت کافی در مورد داده ها نداشته باشیم نمیتوانیم نظری هم در مورد آنها بدهیم.
Data mining-python-iris
در این تصویر، ۴ ویژگی (طول و عرض کاسبرگ و گلبرگ گل ها) و کلاس ها به خوبی نمایش داده شده است.
معمولا اولین مرحله از تجزیه و تحلیل داده ها، شامل جمع آوری و لود داده ها در محیط کاری می شود. ما می توانیم به راحتی با استفاده از قابلیتهای 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
✨✨✨@pythonabb✨✨✨
🌐https://t.me/pythonabb