1. خانه
  2. /
  3. Blog – Classic (1 column)

Blog – Classic (1 column)

Description

داده کاوی با پایتون-طبقه بندی

کتابخانه 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]
[۳٫]
۳٫۰

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

طبقه بندی(Classification)

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

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


آماده سازی(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

 


 


 

پردازش تصویر با پایتون قسمت بیست و هفتم

تبدیل فوریه برای سیگنال یک بعدی

 

بالاخره رسیدیم به بحث شیرین تیدیل_فوریه. 

 

استفاده از تبدیل فوریه برای تجزیه سیگنال نور:

 

python-Image processing-Fourier transformation

python-Image processing-Fourier transformation

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

فوریه

تابعی است که با استفاده از آن می توان هر تابع متناوب را به صورت جمعی از توابع نوسانی ساده(سینوسی، کسینوسی و یا تابع نمایی مختلط ) نوشت.

آنالوگ

 موجی با تغییرات پیوسته(انتگرال فوریه)

دیجیتال

 موجی با تغییرات گسسته(سری  فوریه)

 

 

 

Fourier_series

Fourier series

 

python-Image processing-Fourier transformation

Fourier series

 

سیگنال صوت

 

از مجموعه ای از سینوسها با فرکانس ودامنه وابسته به زمان تشکیل شده است. 

 

این همه بحث در مورد تبدیل فوریه و تجزیه سیگنال به فرکانسهای تشکیل دهنده . کاربردش چیه؟؟ یکی از پر کاربردترین موارد استفاده از آن، فرایند فیلتر در پردازش سیگنال است.
مثلا اگر صدا خش دار و بی کیفیت است یا تصویر وضوح خوبی ندارد با حذف برخی از فرکانسها یا کاهش نویز توسط فیلتر به کیفیت مطلوب میرسونیم.

 

فرکانس یا بسامد

 

تعداد تکرار یک رویداد در واحد زمان.
بر اساس اینکه کدامیک از این سه نوع فرکانس باید حذف شود، سه نوع فیلتر داریم.

 

python-Image processing-Fourier transformation

python-Image processing-Fourier transformation

 

انواع فیلتر :

۱)فیلتر پایین گذر: فرکانسهای بالاتر از یک مقدار معین را حذف میکند و فرکانسهای پایین تر را عبور میدهد.
۲)میان گذر : فقط فرکانس های حد متوسط و میانی عبور داده میشود.
۳) بالا گذر : فرکانسهای پایین تر از یک مقدار معین را حذف میکند و فرکانسهای بالا تر را عبور میدهد.

واقعیت این است که قبل از پردازش اصلی ما یک پیش پردازش داریم تا سیگنالهای خارج از محدوده ی فرکانسی حذف شود. و این کار با فیلتر کردن انجام میشود.

python-Image processing-Fourier transformation

python-Image processing-Fourier transformation

تا اینجا ما سیگنال یک بعدی را بررسی کردیم.ولی تصویر یک سیگنال دو بعدی است


آموزش قبلی

پردازش تصویر با پایتون قسمت بیست و ششم

پردازش تصویر با پایتون قسمت بیست و ششم

تفاوت موج و سیگنال

 

 

برای ادامه بحث به گیف زیر خوب توجه کنید. در واقع گیف زیر، کاربرد تبدیل فوریه را که،  یک سیگنال را از حوزه زمان به حوزه فرکانس تبدیل میکند، به خوبی نمایش میدهد.

 

signal-wave

signal-wave

قبل از  توضیح تبدیل سیگنال تک بعدی به حوزه فرکانس، لازم میدونم به تعریف سیگنال و موج بپردازم:

 

سیگنال-signal

 

سیگنال، کمیت متغیر در زمان ، مکان یا فرکانس است که قابل اندازه گیری و دارای اطلاعاتی باشد. مانند صوت، دما و… . مقدار های مختلف بعد از اندازه گیری باعث میشود سیگنال به شکل یک تابع درآید.

سیگنال میتواند یک بعدی مثل صدا، دو بعدی مثل تصویر، سه بعدی مثل فیلم و … باشد.

 

انواع سیگنال

 

  1. سیگنال آنالوگ یا پیوسته در دنیای واقعی:  این نوع سیگنال، شبیه موج، در زمان های مختلف، مقادیر مختلفی میگیره .
    مانند:
    رادیو، تلفن، تلویزیون های قدیمی و…
  2. سیگنال دیجیتال یا گسسته: در زمانهای مختلف، ممکنه مقدار بگیره، ممکنه مقدار نگیره.
    مثل کامپیوترها(۰و۱)

برای تبدیل سیگنال پیوسته به دیجیتال به عنوان مثال سیگنال صوت ( ذخیره و پردازش صدا به صورت دیجیتال در کامپیوتر) باید نمونه برداری (متناوب یا پریودیک) کنیم.

حداقل فرکانس نمونه‌برداری می‌بایست دو برابر پهنای باند فرکانسی سیگنال نمونه‌برداری شده باشد تا بتوان سیگنال پیوسته را از سیگنال نمونه‌برداری شده بازسازی نمود.
تبدیل صوت از آنالوگ به دیجیتال و بلعکس توسط کارت_صدا صورت میگیرد.

signal-wave

signal-wave

 

موج-wave

 

 هر سیگنال فقط یک موج سینوسی یا کسینوسی نیست بلکه از ترکیب چندین یا بینهایت موج سینوسی و کسینوسی تشکیل شده است. به خاطر همین است که سیگنال ها مشخصا شبیه سینوس یا کسینوس نیستند. در واقع موج بخشی از سیگنال است.

موج: ارتعاش و نوسانی که اغلب حامل انرژی بوده و در فضا یا فضازمان منتشر می‌شود را «موج» می‌گویند.#ویکی

 

signal-wave

signal-wave

 

با توجه به این تصویر و قبلی کاملا مشخص است که ما در حوزه زمان اطلاع خاصی نمیتوانیم دریافت کنیم ولی در حوزه فرکانس متوجه میشویم سیگنال ما از چند فرکانس یا تابع سینوسی تشکیل شده است.

signal-wave

signal-wave

signal-wave

signal-wave


پردازش تصویر با پایتون قسمت بیست و پنجم

پردازش تصویر با پایتون قسمت بیست و هفتم

 

You may also like…

Related products

فهرست