آماده سازی و تصویرسازی  داده ها ۲۰۲۳

 

در آموزش داده کاوی با پایتون-آماده سازی و تصویرسازی قرار است با استفاده از زبان برنامه نویسی پایتون و مثال  معروف داده های زنبق (iris)، داده ها را آماده و برای ساده تر شدن تجزیه و تحلیل  آنها را به تصویر بکشیم. 

هر موضوع با نمونه‌های کد مبتنی بر چهار کتابخانه اصلی پایتون برای تجزیه و تحلیل و دستکاری داده‌ها پوشش داده می‌شود: 

  • numpy 
  •  matplotlib 
  •  sklearn  
  •  networkx

در مقاله داده کاوی با پایتون-Datamining به صورت مفصل در مورد مفهوم داده کاوی بحث کردم و همچنین در آموزش داده کاوی با پایتون-روش الگوریتم CRISP در مورد الگوریتم کریسپ توضیح دادیم. 

 

داده کاوی با پایتون-آماده سازی  داده ها

 اولین مرحله از داده کاوی وارد کردن (Importing) و تجسم داده ها (Visualization) می باشد. 

بنابراین در ابتدا به تجزیه و تحلیل داده ها که شامل بدست آوردن و بارگذاری داده ها در محیط کار است می پردازیم.  

دیتاست مورد استفاده در این آموزش، شامل ۵۰ نمونه از هر یک از ۳ نوع گل زنبق setosa ،virginica و versicolor  که جمعا ۱۵۰(۵۰*۳) نمونه میشوند، می‌باشد. 

ویژگیها و کلاس ها در دیتاست ایریس

مجموعه ی  داده‌ها به صورت سی اس وی (csv) که با کاما از هم جدا میشوند. همچنین شامل ۵ ستون می‌باشند که ۴ ستون اول ویژگیها و ستون آخر کلاس نمونه ما می‌باشد.
ویژگی ها، با اسم های دیگری مثل  ورودی، متغیر مستقل و متغیر پیش بینی نیز شناخته می شوند.در این مثال Sepal length , Sepal width , Petal length , Petal width ورودی ها می باشند.
کلاسها، نیز با نام های دیگری مانند خروجی ها،  تارگت، متغیر وابسته یا پاسخ شناخته می شوند که در این مثال
setosa ،virginica و versicolor خروجی های ما می باشند.

 

داده کاوی با پایتون-  آماده سازی و تصویرسازی  داده ها

datamining-python-iris


یکی از مواردی که برای داده کاوی مهمه،بحث شناخت کسب و کار و فرایندهای آن میباشد. اگر ما شناخت کافی در مورد داده ها نداشته باشیم نمیتوانیم نظری هم در مورد آنها بدهیم.

Data mining-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()

همانطور که در قطعه کد بالا مشاهده میکنیم از دو بعد اول وسوم (طول و عرض کاسبرگ) استفاده شده است. و نتیجه آن در شکل زیر مشاهده میشود:

Data mining-python-iris

Data mining-python-iris

 
در این گراف حدود ۱۵۰ تا نقطه و سه رنگ برا ی نشان دادن کلاسها داریم.
نقطه های آبی نشان دهنده نمونه ای از نمونه ی 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()

Data mining-python-iris

Data mining-python-iris

به عنوان مثال ما مشاهده میکنیم که میانگین گل setosa،  طول کاسبرگ کوچکتری نسبت بهvirginica   دارند.

https://dzone.com

 

تازه ترین نظرات


دیدگاهتان را بنویسید

We are glad you have chosen to leave a comment. Please keep in mind that comments are moderated according to our comment policy.