داده‌کاوی با پایتون کیست؟ توضیح بده.
داده‌کاوی فرایند کشف اطلاعات پیش‌بینی شده از تجزیه و تحلیل پایگاه داده‌های بزرگ است. نتیجهٔ مورد نظر از داده‌کاوی برای ایجاد یک مدل از یک مجموعه داده‌است با توجه به اینکه می‌تواند بینش خود را به مجموعه داده‌های مشابه تعمیم دهد. به عنوان مثالی در دنیای واقعی از یک نرم‌افزار داده‌کاوی موفق می‌توان در تشخیص تقلب خودکار از بانک‌ها و موسسات اعتباری دید.نرم‌افزار برنامه‌نویسی پایتون یکی از نرم‌افزارهای کارآمد در داده‌کاوی می‌باشد. پایتون به دلیل سادگی و همه منظوره بودن و ایجاد برنامه‌های کاربردی و تحلیل داده مورد توجه همگان قرار گرفته‌است. همچنین داشتن کتابخانه‌های متعدد و دسترسی آسان به آن موجب گرایش بسیاری از برنامه نویسان شده‌است. به همین دلیل به توضیح نکاتی از تکنیک‌های داده‌کاوی با پایتون می‌پردازیم.آماده‌سازی داده‌ها.اولین قدم در داده کاوی آماده‌سازی داده‌هاست که روش‌های مختلفی با استفاده از کتابخانه‌های متفاوت (بسته به نوع داده‌ها و نتیجه مورد نیاز) دارد. آماده‌سازی داده برای الگوریتم‌های معروف یادگیری ماشین که یکی از ابزارهای داده کاوی در پایتون محسوب می‌شود، نیز کاربرد دارد:یکی از روش‌های معرفی داده به برنامه از طریق دستور زیر است (مثال: داده‌های ما در این نمونه کار شامل ۵۰ نمونه از ۳ مدل گل مورد تحقیق می‌باشد. داده‌ها به صورت سی‌ای‌وی می‌باشد. داده‌های دریافتی شامل ۵ ردیف می‌باشند. ۴ ردیف اول مقادیر و ردیف آخر کلاس نمونه ما می‌باشد):import urllib2url = 'http://aima.cs.berkeley.edu/data/iris.csv'u = urllib2.urlopen(url)localFile = open('iris.csv', 'w')localFile.write(u.read())numpyimport genfromtxt, zerosdata = 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 elementsset(['setosa', 'versicolor', 'virginica'])تصویر سازی.فهمیدن این که داده‌ها چه اطلاعاتی به ما می‌دهند و چگونگی ساختار آن‌ها یک مأموریت مهم در داده‌کاوی می‌باشد. تصویر سازی به ما کمک می‌کند تا به صورت گرافیکی این اطلاعات را بدست آوریم. استفاده از دستورهای نمودار کشیدن به ما کمک می‌کند تا مقدارهای دو داده مختلف را به صورت گرافیکی با هم مقایسه کنیم. مثال:دستور زیر برای ما گرافی را رسم می‌کند:import plot, showplot(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 corrcoefcorr = corrcoef(data.T) # .T gives the transposeprint corrحاصل یک ماتریس شد شامل همبستگی‌ها.ردیف‌ها نشان دهنده متغیرها و ستون‌ها مشاهدات ما هستند. هر عضو ماتریس نشان دهنده همبستگی دو متغیر می‌باشد. همبستگی زمانی مثبت ست که دو متغیر با هم رشد کنند. زمانی منفی است که یکی رشد و دیگری کاهش یابد. وقتی تعداد متغیرها بالا باشد می‌توان نموداری با دستور زیر برای آن‌ها رسم کرد:from pylab import pcolor, colorbar, xticks, yticksfrom numpy import arrangepcolor(corr)colorbar() # addxticks(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).این الگوریتم به بررسی روابط میان داده‌ها و مدل سازی آن‌ها می‌پردازد. هدف این تکنیک پیش‌بینی مقدار یک متغیر پیوسته بر اساس مقادیر دیگر متغیرهاست. شامل دونوع است:رگرسیون خطی.یکی از روش‌های ساخت رگرسیون خطی پیروی از دستور زیر است:from numpy.random import randx = rand(40,1) # explanatory variabley = x*x*x+rand(40,1)/5 # depentend variablefrom sklearn.linear_model import LinearRegressionlinreg = LinearRegression()linreg.fit(x,y)جهت رسم نمودار نیز کد زیر مورد استفاده است:from numpy import linspace, matrixxx = linspace(0,1,40)plot(x,y,'o',xx,linreg.predict(matrix(xx).T),'--r')show()نتیجه کد بدین صورت است:کتابخانه‌های لازم داده کاوی با پایتون.برای انجام داده کاوی با پایتون باید کتابخانه‌های لازم را بدانیم تا با بهره‌گیری از آن‌ها کدها را اجرا کنیم.در ادامه دسته‌ای از کتابخانه‌های مهم را نام می‌بریم.Numpy: ماژولی توسعه یافته و متن باز است که عملکردهای از پیش تعیین شده‌ای از روتین‌های عددی در اختیار ما قرار می‌دهد.Scipy: این امکان را به ما می‌دهد که در ارایه‌های n بعدی دست ببریم.Matplotlib: برای ما تصویر سازی و ترسیم و ویژوالیزیشن را ممکن می‌کند.Matplotlib: بیشتر برای الگوریتم‌های معروف یادگیری ماشین است.Pandas: دارای ساختارهای اطلاعاتی سطح بالا و ابزارهای طراحی برای عملیات ساده و سریه آنالیزی است.Seaborn: امکان ترسیم نمایه‌های گرافیکی از داده‌های آماری.دیگر: Theono ,NLTK ,statsmodels ,gensim, ...فراخوانی کتابخانه.برای استفاده از کتابخانه‌ها پیش از شروع کدنویسی باید آن‌ها را فراخواند:import pandas as pdimport matplotlib.pyplot as pltimport numpy as npimport scipy.stats as statsimport seaborn as sns