داده‌کاوی با پایتون
داده‌کاوی فرایند کشف اطلاعات پیش‌بینی شده از تجزیه و تحلیل پایگاه داده‌های بزرگ است. نتیجهٔ مورد نظر از داده‌کاوی برای ایجاد یک مدل از یک مجموعه داده‌است با توجه به اینکه می‌تواند بینش خود را به مجموعه داده‌های مشابه تعمیم دهد. به عنوان مثالی در دنیای واقعی از یک نرم‌افزار داده‌کاوی موفق می‌توان در تشخیص تقلب خودکار از بانک‌ها و موسسات اعتباری دید. نرم‌افزار برنامه‌نویسی پایتون یکی از نرم‌افزارهای کارآمد در داده‌کاوی می‌باشد. پایتون به دلیل سادگی و همه منظوره بودن و ایجاد برنامه‌های کاربردی و تحلیل داده مورد توجه همگان قرار گرفته‌است. همچنین داشتن کتابخانه‌های متعدد و دسترسی آسان به آن موجب گرایش بسیاری از برنامه نویسان شده‌است. به همین دلیل به توضیح نکاتی از تکنیک‌های داده‌کاوی با پایتون می‌پردازیم.
اولین قدم در داده کاوی آماده‌سازی داده‌هاست که روش‌های مختلفی با استفاده از کتابخانه‌های متفاوت (بسته به نوع داده‌ها و نتیجه مورد نیاز) دارد. آماده‌سازی داده برای الگوریتم‌های معروف یادگیری ماشین که یکی از ابزارهای داده کاوی در پایتون محسوب می‌شود، نیز کاربرد دارد: یکی از روش‌های معرفی داده به برنامه از طریق دستور زیر است (مثال: داده‌های ما در این نمونه کار شامل ۵۰ نمونه از ۳ مدل گل مورد تحقیق می‌باشد. داده‌ها به صورت سی‌ای‌وی می‌باشد. داده‌های دریافتی شامل ۵ ردیف می‌باشند. ۴ ردیف اول مقادیر و ردیف آخر کلاس نمونه ما می‌باشد): 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 data = genfromtxt('iris.csv',delimiter=',',usecols=(0,1,2,3)) 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() گراف حاصل شامل ۱۵۰ نقطه و ۳ رنگ که نشانگر کلاس‌ها هستند است. هدف این قوانین یافتن مواردی است که به‌طور معناداری با یکدیگر همبستگی دارند. به‌طور مثال شما می‌توانید تراکنش خریدهایی را بررسی کنید تا ترکیبی از کالاهایی را که به‌طور معمول با هم خریداری می‌شوند را به دست آورید. این خواص به سوالاتی ازین قبیل پاسخ می‌دهند: اگر دسته‌ای از موارد در یک تراکنش باشند کدام مورد یا موارد بنظر می‌رسد که در تراکنشی یکسان با آن‌ها قرار داشته باشد؟ تابعی که این قانون را از داده‌ها استخراج می‌کند تابع انجمنی نام دارد. مثال:میتوان تحلیل کرد مثلاً اگر مشتری رنگ خریداری کند به احتمال ۲۰٪ قلمو هم خریداری می‌کند. همچنین برای هم بستگی چندگانه اگر مشتری رنگ و قلمو بخرد به احتمال ۴۰٪ تینر نیز می‌خرد. بهترین میزان سنجش همبستگی ضریب همبستگی پیرسون می‌باشد و آن را می‌توان از تقسیم کوواریانس دو متغیر بدست آورد. دستور زیر به وضوح بیانگر روش محاسبه است: 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 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()
حاصل دستور فوق این نمودار است:
این قاعده توالی اتفاقات را بررسی می‌کند که هر موردی چه مورد دیگری را در پی دارد.
این مورد نسبت به بقیه به نسبت قابل درک تر است. ابتدا داده‌ها را رده‌بندی می‌کند برای اینکه مدلی ساخته شود که بتوان از آن برای پیش‌بینی رده آن‌هایی که مشخص نیستند استفاده کرد. همان روند شناخت دسته‌ای که یک شیی متعلق به آن است. بعنوان مثال طبقه‌بندی ایمیل به عنوان اسپم یا قانونی/مثلاً بررسی میزان اعتبار یک فرد و تصویب یا رد درخواست وام او
فرایندی اتوماتیک است که داده‌ها را به مجموعه و دسته‌هایی که اعضای آن‌ها مشابه‌اند تقسیم می‌کند. شباهت مورد نظر بسته به کاربرد و نتیجه و نوع تحلیل متغیر است. در هر دسته اعضا با هم مشابه‌اند و با دسته‌های دیگر نامشابه. هدف این قاعده پیدا کردن مجموعه مشابه از موارد در بین داده‌های ورودی است. تعداد خوشه‌ها معیار و ملاک خوشه بندی و اینکه کدام خوشه بندی مطلوب تر است بسته به الگوریتم و هدف ما است. در کنار خوشه‌بندی مفهوم دسته‌بندی وجود دارد. هدف خوشه‌بندی پیدا کردن دسته شمارا و متناهی از خوشه‌هاست برای توصیف داده هاست اما دسته‌بندی هدف ایجاد یک مدل پیشگویی‌کننده را دارد که هم توانایی دسته‌بندی داده‌های ورودی را داشته باشد و هم بتوان از آن برای پیش گویی اینکه داده تازه‌وارد شده متعلق به کدام دسته است استفاده کرد.
این الگوریتم به بررسی روابط میان داده‌ها و مدل سازی آن‌ها می‌پردازد. هدف این تکنیک پیش‌بینی مقدار یک متغیر پیوسته بر اساس مقادیر دیگر متغیرهاست. شامل دونوع است: یکی از روش‌های ساخت رگرسیون خطی پیروی از دستور زیر است: 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