داده‌کاوی فرایند کشف اطلاعات پیش‌بینی شده از تجزیه و تحلیل پایگاه داده‌های بزرگ است. نتیجهٔ مورد نظر از داده‌کاوی برای ایجاد یک مدل از یک مجموعه داده‌است با توجه به اینکه می‌تواند بینش خود را به مجموعه داده‌های مشابه تعمیم دهد. به عنوان مثالی در دنیای واقعی از یک نرم‌افزار داده‌کاوی موفق می‌توان در تشخیص تقلب خودکار از بانک‌ها و موسسات اعتباری دید.
نرم‌افزار برنامه‌نویسی پایتون یکی از نرم‌افزارهای کارآمد در داده‌کاوی می‌باشد. پایتون به دلیل سادگی و همه منظوره بودن و ایجاد برنامه‌های کاربردی و تحلیل داده مورد توجه همگان قرار گرفته‌است. همچنین داشتن کتابخانه‌های متعدد و دسترسی آسان به آن موجب گرایش بسیاری از برنامه نویسان شده‌است. به همین دلیل به توضیح نکاتی از تکنیک‌های **داده‌کاوی با پایتون** می‌پردازیم.

آماده‌سازی داده‌ها
------------------

اولین قدم در داده کاوی آماده‌سازی داده‌هاست که روش‌های مختلفی با استفاده از کتابخانه‌های متفاوت (بسته به نوع داده‌ها و نتیجه مورد نیاز) دارد. آماده‌سازی داده برای الگوریتم‌های معروف یادگیری ماشین (به انگلیسی: machine learning) که یکی از ابزارهای داده کاوی در پایتون محسوب می‌شود، نیز کاربرد دارد:

1. تحلیل داده‌ها
2. مدیریت داده‌های ناکامل
3. نرمال ساختن داده‌ها
4. دسته‌بندی داده‌ها به انواع آنها

یکی از روش‌های معرفی داده به برنامه از طریق دستور زیر است (مثال: داده‌های ما در این نمونه کار شامل ۵۰ نمونه از ۳ مدل گل مورد تحقیق می‌باشد. داده‌ها به صورت سی‌ای‌وی می‌باشد. داده‌های دریافتی شامل ۵ ردیف می‌باشند. ۴ ردیف اول مقادیر و ردیف آخر کلاس نمونه ما می‌باشد):

```
import urllib2
url = 'http://aima.cs.berkeley.edu/data/iris.csv'
u = urllib2.urlopen(url)
localFile = open('iris.csv', 'w')
localFile.write(u.read())
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 set(target) # build a collection of unique elements
set(['setosa', 'versicolor', 'virginica'])

```

تصویر سازی
----------

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

```
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()

```

گراف حاصل شامل ۱۵۰ نقطه و ۳ رنگ که نشانگر کلاس‌ها هستند است.

نمودار حاصلنمودار حاصل

قواعد و توابع
-------------

نمونه‌ای از کد همبستگی در پایتون
### انجمنی یا همبستگی(Association)

هدف این قوانین یافتن مواردی است که به‌طور معناداری با یکدیگر همبستگی دارند. به‌طور مثال شما می‌توانید تراکنش خریدهایی را بررسی کنید تا ترکیبی از کالاهایی را که به‌طور معمول با هم خریداری می‌شوند را به دست آورید.
این خواص به سوالاتی ازین قبیل پاسخ می‌دهند: اگر دسته‌ای از موارد در یک تراکنش باشند کدام مورد یا موارد بنظر می‌رسد که در تراکنشی یکسان با آن‌ها قرار داشته باشد؟
تابعی که این قانون را از داده‌ها استخراج می‌کند تابع انجمنی نام دارد.
مثال:میتوان تحلیل کرد مثلاً اگر مشتری رنگ خریداری کند به احتمال ۲۰٪ قلمو هم خریداری می‌کند. همچنین برای هم بستگی چندگانه اگر مشتری رنگ و قلمو بخرد به احتمال ۴۰٪ تینر نیز می‌خرد.
بهترین میزان سنجش همبستگی ضریب همبستگی پیرسون می‌باشد و آن را می‌توان از تقسیم کوواریانس دو متغیر بدست آورد. دستور زیر به وضوح بیانگر روش محاسبه است:

```
from numpy import corrcoef
corr = corrcoef(data.T) # .T gives the transpose
print corr

```

حاصل یک ماتریس شد شامل همبستگی‌ها.
ردیف‌ها نشان دهنده متغیرها و ستون‌ها مشاهدات ما هستند. هر عضو ماتریس نشان دهنده همبستگی دو متغیر می‌باشد. همبستگی زمانی مثبت ست که دو متغیر با هم رشد کنند. زمانی منفی است که یکی رشد و دیگری کاهش یابد. وقتی تعداد متغیرها بالا باشد می‌توان نموداری با دستور زیر برای آن‌ها رسم کرد:

```
from pylab import pcolor, colorbar, xticks, yticks
from numpy import arrange
pcolor(corr)
colorbar() # add
# arranging the names of the variables on the axis
xticks(arange(0.5,4.5),['sepal length',  'sepal width', 'petal length', 'petal width'],rotation=-20)
yticks(arange(0.5,4.5),['sepal length',  'sepal width', 'petal length', 'petal width'],rotation=-20)
show()

```

حاصل دستور فوق این نمودار است:

نمودار ۲نمودار ۲
### ترتیب یا وابستگی(sequence)

این قاعده توالی اتفاقات را بررسی می‌کند که هر موردی چه مورد دیگری را در پی دارد.

نمونه‌ای از کد طبقه‌بندی در پایتون
### طبقه‌بندی(classification)

این مورد نسبت به بقیه به نسبت قابل درک تر است.
ابتدا داده‌ها را رده‌بندی می‌کند برای اینکه مدلی ساخته شود که بتوان از آن برای پیش‌بینی رده آن‌هایی که مشخص نیستند استفاده کرد. همان روند شناخت دسته‌ای که یک شیی متعلق به آن است.
بعنوان مثال طبقه‌بندی ایمیل به عنوان اسپم یا قانونی/مثلاً بررسی میزان اعتبار یک فرد و تصویب یا رد درخواست وام او

### خوشه‌بندی(clustering)

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

### رگرسیون(Regression)

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

1. رگرسیون خطی
2. رگرسیون غیر خطی

#### رگرسیون خطی

یکی از روش‌های ساخت رگرسیون خطی پیروی از دستور زیر است:

```
from numpy.random import rand
x = rand(40,1) # explanatory variable
y = x\*x\*x+rand(40,1)/5 # depentend variable
from sklearn.linear\_model import LinearRegression
linreg = LinearRegression()
linreg.fit(x,y)

```

جهت رسم نمودار نیز کد زیر مورد استفاده است:

```
from numpy import linspace, matrix
xx = linspace(0,1,40)
plot(x,y,'o',xx,linreg.predict(matrix(xx).T),'--r')
show()

```

نتیجه کد بدین صورت است:

نمودار ۳نمودار ۳

کتابخانه‌های لازم داده کاوی با پایتون
-------------------------------------

برای انجام داده کاوی با پایتون باید کتابخانه‌های لازم را بدانیم تا با بهره‌گیری از آن‌ها کدها را اجرا کنیم.
در ادامه دسته‌ای از کتابخانه‌های مهم را نام می‌بریم.

**Numpy**: ماژولی توسعه یافته و متن باز است که عملکردهای از پیش تعیین شده‌ای از روتین‌های عددی در اختیار ما قرار می‌دهد.

**Scipy**: این امکان را به ما می‌دهد که در ارایه‌های n بعدی دست ببریم.

**Matplotlib**: برای ما تصویر سازی و ترسیم و ویژوالیزیشن را ممکن می‌کند.

**Matplotlib**: بیشتر برای الگوریتم‌های معروف یادگیری ماشین است.

**Pandas**: دارای ساختارهای اطلاعاتی سطح بالا و ابزارهای طراحی برای عملیات ساده و سریه آنالیزی است.

دیگر: **Theono** ,**NLTK** ,**statsmodels** ,**gensim**, ...

### فراخوانی کتابخانه

برای استفاده از کتابخانه‌ها پیش از شروع کدنویسی باید آن‌ها را فراخواند:

```
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import seaborn as sns

```

جستارهای وابسته
---------------

* پایتون
* علم داده‌ها
* آمار
* برنامه‌نویسی

منابع
-----

1. ↑  «پایتون».
2. ↑  «رسم نمودار در داده کاوی».
3. ↑  «قواعد دادهکاوی». از پارامتر ناشناخته `|نام مرجع=` صرف‌نظر شد (کمک)
4. ↑  «تعریف وهدف خوشه بندی». بایگانی‌شده از اصلی در ۱۶ دسامبر ۲۰۱۶. دریافت‌شده در ۲۰ ژانویه ۲۰۱۷.
5. ↑  «ماژول و کتابخانه ها».

|  |  |
| --- | --- |
|  | در ویکی‌انبار پرونده‌هایی دربارهٔ داده‌کاوی با پایتون موجود است. |

| * ن
* ب
* و
علوم رایانه |
| --- |
| Note: This template roughly follows the 2012 ACM Computing Classification System. |
| سخت‌افزار | 
* برد مدار چاپی
* دستگاه جانبی
* مدار مجتمع
* یکپارچه‌سازی کلان‌مقیاس
* سامانه روی یک تراشه
* رایانش سبز
* خودکارسازی طراحی الکترونیکی
* شتاب‌دهنده سخت‌افزاری

 |
| سازمانسامانه‌های رایانه | 
* معماری رایانه
* سامانه نهفته
* رایانش بی‌درنگ
* اطمینان‌پذیری

 |
| شبکه رایانه‌ای | 
* معماری شبکه
* پروتکل ارتباطات
* سخت‌افزار شبکه
* برنامه‌ریز شبکه
* کارایی شبکه رایانه‌ای
* سرویس شبکه‌ای

 |
| سازمان نرم‌افزار | 
* مفسر
* میان‌افزار
* ماشین مجازی
* سیستم‌عامل
* کیفیت نرم‌افزار

 |
| نظریه زبان‌های برنامه‌نویسیو ابزار توسعه نرم‌افزار | 
* الگو برنامه‌نویسی
* زبان برنامه‌نویسی
* کامپایلر
* زبان خاص دامنه
* زبان مدل‌سازی
* چارچوب نرم‌افزاری
* محیط یکپارچه توسعه نرم‌افزار
* مدیریت پیکربندی نرم‌افزار
* کتابخانه (رایانه)
* مخزن نرم‌افزاری

 |
| توسعه نرم‌افزار | 
* فرایند توسعه نرم‌افزار
* تحلیل نیازمندی‌ها
* طراحی نرم‌افزار
* ساخت نرم‌افزار
* استقرار نرم‌افزار
* تعمیر و نگهداری نرم‌افزار
* تیم برنامه‌نویسی
* نرم‌افزار متن‌باز
* برنامه‌نویسی
* آزمون نرم‌افزار

 |
| نظریه محاسبات | 
* مدل محاسبه
* زبان صوری
* نظریه اتوماتا
* نظریه رایانش‌پذیری
* نظریه پیچیدگی محاسباتی
* منطق در علوم کامپیوتر
* معنی‌شناسی (علوم رایانه)

 |
| الگوریتمها | 
* الگوریتم
* تحلیل الگوریتم‌ها
* کارایی الگوریتمی
* الگوریتم‌های تصادفی
* هندسه محاسباتی

 |
| ریاضیاترایانه | 
* ریاضیات گسسته
* احتمالات
* آمار
* نرم‌افزار ریاضی
* نظریه اطلاعات
* آنالیز ریاضی
* آنالیز عددی

 |
| سامانه اطلاعاتی | 
* پایگاه داده
* ذخیره‌سازی داده رایانه
* سامانه اطلاعات سازمانی
* نرم‌افزار اجتماعی
* سامانه اطلاعات جغرافیایی
* سامانه پشتیبانی تصمیم
* کنترل فرایند
* پایگاه داده چند رسانه‌ای
* داده‌کاوی
* کتابخانه دیجیتال
* سکوی رایانش
* بازاریابی اینترنتی
* وب جهان‌گستر
* بازیابی اطلاعات
* مستندسازی فنی

 |
| امنیت رایانه | 
* رمزنگاری
* روش‌های صوری
* خدمات امنیتی
* سامانه تشخیص نفوذ
* خرابی سخت‌افزار
* امنیت شبکه
* امنیت اطلاعات
* امنیت برنامه

 |
| تعامل انسان و رایانه | 
* طراحی تعاملی
* رایانش اجتماعی
* رایانش فراگیر
* مصورسازی
* دسترس‌پذیری رایانه
* واسط‌های کاربر
* رایانش پوشیدنی

 |
| همروندی | 
* رایانش همزمان
* رایانش موازی
* رایانش توزیع‌شده
* چندریسمانی
* چندپردازشی

 |
| هوش مصنوعی | 
* پردازش زبان‌های طبیعی
* بازنمود دانش
* بینایی رایانه‌ای
* برنامه‌ریزی خودکار
* بهینه‌سازی
* نظریه کنترل
* فلسفه هوش مصنوعی
* هوش مصنوعی توزیع شده
* استدلال خودکار
* زبان‌شناسی رایانشی
* یادگیری ماشینی

 |
| یادگیری ماشین | 
* یادگیری با نظارت
* یادگیری بی‌نظارت
* یادگیری تقویتی
* یادگیری چند-وظیفه‌ای
* روش اعتبارسنجی متقابل

 |
| گرافیک رایانه‌ای | 
* پویانمایی رایانه‌ای
* رندرینگ (گرافیک رایانه‌ای)
* روتوش
* واحد پردازش گرافیکی
* واقعیت ترکیبی
* واقعیت مجازی
* فشرده‌سازی تصویر
* مدلسازی جامد

 |
| رایانشکاربردی | 
* تجارت الکترونیک
* نرم‌افزار سازمانی
* ریاضیات محاسباتی
* فیزیک محاسباتی
* شیمی محاسباتی
* زیست‌شناسی محاسباتی
* علوم اجتماعی محاسباتی
* مهندسی و علم محاسبه
* انفورماتیک پزشکی
* هنر دیجیتال
* نشر الکترونیک
* جنگ مجازی
* رأی‌گیری الکترونیکی
* بازی ویدئویی
* واژه‌پرداز
* تحقیق در عملیات
* فناوری آموزشی
* سامانه مدیریت اسناد

 |
| توجه: بنا بر سامانه رده‌بندی رایانش ای‌سی‌ام علم رایانه همچنین می‌تواند به موضوع‌ها یا زمینه‌های گوناگون تقسیم شود.
* **کتاب:علوم رایانه**
* **رده:علوم رایانه**
* **طرح کلی علوم رایانه**
* **ویکی‌پدیا:ویکی‌پروژه علوم رایانه**
* **ویکی‌انبار**
 |


| * ن
* ب
* و
انبار داده |
| --- |
| 

| Creating the data warehouse |
| --- |
| 

|  |  |
| --- | --- |
| مفاهیم | 
* پایگاه داده‌ها
* Dimension
* Dimensional modeling
* انبار داده
* پردازش تحلیلی برخط
* مدل ستاره
* Aggregate

 |
| Variants | 
* Anchor Modeling
* سامانه مدیریت پایگاه داده ستون‌گرا
* Data vault modeling
* پردازش تحلیلی برخط
* پردازش تحلیلی برخط
* پردازش تحلیلی برخط
* Operational data store

 |
| عناصر | 
* واژه‌نامه داده/فراداده
* داده‌گاه
* Sixth normal form
* Surrogate key

 |
| Fact | 
* Fact table
* Early-arriving fact
* Measure

 |
| Dimension | 
* Dimension table
* Degenerate
* Slowly changing

 |
| Filling | 
* Extract-Transform-Load (ETL)
* Extract
* Transform
* Load

 |

 |

 |
| 

| کاربرد انبار داده |
| --- |
| 

|  |  |
| --- | --- |
| مفاهیم | 
* هوش کسب و کار
* Dashboard
* داده‌کاوی
* سامانه پشتیبانی تصمیم
* OLAP cube
* Data warehouse automation

 |
| Languages | 
* Data Mining Extensions (DMX)
* MultiDimensional eXpressions (MDX)
* XML for Analysis (XMLA)

 |
| ابزارها | 
* Business intelligence tools
* Reporting software
* صفحه گسترده

 |

 |

 |
| 

| مرتبط |
| --- |
| 

|  |  |
| --- | --- |
| People | 
* Bill Inmon
* Ralph Kimball

 |
| تولیدات | 
* Comparison of OLAP Servers
* Data warehousing products and their producers

 |

 |

 |