داده کاوی با پایتون_قسمت پنجم

کتابخانه sklearn – طبقه بندی

کتابخانه sklearn شامل اجرای بسیاری از مدل ها برای طبقه بندی است و در این بخش، نحوه استفاده از Bayes Naive Gauss را برای شناسایی گل های iris به صورت Setosa، Versicolor یا Virginica  خواهیم دید. برای این منظور، بردار رشته هایی را که شامل کلاس است را به اعداد صحیح ، تبدیل می کنیم:

t = zeros(len(target))
t[target == 'setosa'] = 1
t[target == 'versicolor'] = 2
t[target == 'virginica'] = 3
print t
[۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫
 ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫ ۱٫
 ۱٫ ۱٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫
 ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫ ۲٫
 ۲٫ ۲٫ ۲٫ ۲٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫
 ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫
 ۳٫ ۳٫ ۳٫ ۳٫ ۳٫ ۳٫]

از این جا به بعد طبقه بند را کشف کرده و آموزش میدهیم.

from sklearn.naive_bayes import GaussianNB
classifier = GaussianNB()
classifier.fit(data,t) # آموزش دیتاست iris
GaussianNB(priors=None)

طبقه بندی را می توان با متد predict (پیش بینی)،  انجام داد و آن را با یکی از نمونه ها،  آسان،  تست کرد:


print (classifier.predict(data[[0]]))
print t[0]
[۱٫]
۱٫۰
print classifier.predict(data[[1]])
[۱٫]
۱٫۰
print classifier.predict(data[[100]])

print t[100]
[۳٫]
۳٫۰
python-datamining

داده کاوی با پایتون_قسمت چهارم

طبقه بندی(Classification)

طبقه بندی، یک تابع داده کاوی است که نمونه ها(samples ) را در یک مجموعه داده برای تعیین کلاس ها اختصاص می دهد.
مدل هایی که این تابع را اجرا می کنند، طبقه بند ، نامیده می شوند.
دو روش اساسی برای استفاده از طبقه بند وجود دارد: آموزش و طبقه بندی.
آموزش(Training ): مثلا من میام ۱۰۰ نمونه گل iris را انتخاب و با توجه به ویژگی های آنها ، آنها را به ۳ دسته(برچسب یا تارگت یا کلاس) تقسیم میکنم.
طبقه بندی(Classification ): حالا که ۱۰۰ نمونه را آموزش دادم که جزو کدام دسته باشند، نوبت به این میرسه که مثلا ۵۰ نمونه ناشناس ، توسط یک طبقه بند بررسی شوند که به کدام کلاس تعلق دارند.

python-datamining

داده کاوی با پایتون_قسمت سوم

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

 

آماده سازی(Importing)

آموزش خود را با مثال معروف داده های زنبق(iris) ادامه میدهیم:

این دیتاست، شامل ۵۰ نمونه از  ۳ نوع گل زنبق setosa،virginica و versicolor  که جمعا ۱۵۰(۵۰*۳) نمونه میشود، می‌باشد.
داده‌ها به صورت سی اس وی(با کاما از هم جدا میشوند) می‌باشد. داده‌های دریافتی شامل ۵ ستون می‌باشند که ۴ ستون اول ویژگیها و ستون آخر کلاس نمونه ما می‌باشد.
ویژگیها (ورودی ها ، متغیر  مستقل، متغیر پیش بین ): طول و عرض کاسبرگ وطول و عرض گلبرگ

Sepal length , Sepal width , Petal length , Petal width.

کلاسها(خروجی ها ، تارگت، متغیر وابسته یا پاسخ) :

setosa،virginica و versicolor

datamining-python-iris

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

✨✨✨@pythonabb✨✨✨

🌐https://t.me/pythonabb

 

داده کاوی با پایتون_قسمت دوم

datamining

http://www.adaptivecycle.nl/index.php?title=File:Data_Mining.png

 

روشهای داده کاوی

 

۱) طبقه بندی

۲) خوشه بندی

۳) کشف قانون همبستگی

۴) تشخیص و کشف خطا

۵) کشف الگوی ترتیبی

 

فرایند داده کاوی

 Knowledge Discovery in Databases (KDD) 

کشف دانش از پایگاه داده ها

فرایند داده کاوی

فرایند داده کاوی

همانطور که در تصویر بالا مشاهده میکنیم داده کاوی یکی از مراحل فرایند کشف دانش را تشکیل میدهد.

داده کاوی در کل مراحل و روش های مختلفی دارد. 

برای داده کاوی اول باید داده ها را  تمیز کرد، دسته بندی کرد، مشکلاتی که دارند رو حل کرد و …

 

روش الگوریتم   CRISP

Cross Industry Standard Process:فرایندهای استاندارد صنعت متقابل برای داده‌کاوی(ویکی)

CRISP

Cross Industry Standard Process

مراحل الگوریتم   CRISP

 

مرحله اول فهم کسب و کار

 مرحله دوم  درک داده ها 

 مرحله سوم  آماده سازی داده ها 

 مرحله چهارم درست کردن مدل اجرایی برای انجام داده کاوی 

مرحله پنجم ارزیابی مدلی که ایجاد کردیم با یکسری دادههای تستی 

مرحله آخر از این مدل استفاده می کنیم برای تحلیل داده و توسعه

همانطور که در تصویر مشاهده میشود، توسط فلش هایی، مراحل به هم دیگر راه دارند که جهت تکمیل هر مرحله استفاده میشود.

دایره بزرگ هم نشان دهنده ی تکمیل کل فرایند و آماده شدن آن برای استفاده در این پروژه یا پروژه های دیگر است. 

داده کاوی با پایتون_قسمت اول

داده کاوی(Datamining)

داده کاوی

بیایید با هم تصور کنیم انبوه داده ی ما معدن سنگ است(Big_Data )

datamining-big-data

داده کاوی-داده های بزرگ

 

اگر دانشی که قرار است از میان انبوه داده کشف شود، رگه طلایی باشد که باید از میان آن همه سنگ کشف شود،  با داده کاوی دانش پنهان   را  از  داه های بزرگ کشف می کنیم.

دانش

Knowledge-دانش

داده های بزرگ(Big_Data )

 

برای داده_کاوی ما نیاز به حجم زیادی داده داریم که این داده ها، Big_Data نامیده میشود. حجم زیاد یعنی اونقدر داده ها زیاد باشه که به راحتی نشه تجزیه و تحلیل کرد. فق با ابزار خاص.

از ویژگیهای مهم Big_Data :

۱) ارزشمند بودن داده ها(value)

۲)متنوع بودن داده ها(variety

۳)حجیم بودن داده ها(volume)حجم زیاد یعنی اونقدر داده ها زیاد باشه که به راحتی نشه تجزیه و تحلیل کرد. فقط با ابزار خاص.

۴)داده ها به سرعت در حال تغییر و تولید هستند(Velocity)

۵)داده ها به درد بخور و صحیح هستند(veracity)

 

در کل سه ویژگی اول از همه مهمتر هستند.