پروژه عملی طبقه بندی با یادگیری ماشین صفر تا صد - قسمت 1

خب در این سری از پستها می خواییم با آزمایشگاهی که در قسمت قبل ساختیم بریم و روی دیتاستمون کار کنیم و یک خلاصه آماری و نموداری از اون نشون بدیم.در ابتدا یک فایل پایتون باز کنید و یک جایی ذخیره کنید . برای اینکار میتونید از notepad استفاده کنید.برای اینکه یک فایل پایتونی باشه باید فرمتpy ذخیره بشه.(اسم فایل من hw.py هستش) خب ابتدا ماژولها و کتابخونه هایی که قراره ازشون استفاده کنیم رو به این فایل اضافه میکنیم.# Load libraries from pandas import read_csv from pandas.plotting import scatter_matrix from matplotlib import pyplot from sklearn.model_selection import train_test_split from sklearn.model_selection import cross_val_score from sklearn.model_selection import StratifiedKFold from sklearn.metrics import classification_report from sklearn.metrics import confusion_matrix from sklearn.metrics import accuracy_score from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVCبرای مرحله بعد ما باید دیتاستمون رو وارد برنامه بکنیم . برای این آموزش از دیتاست نمونه های گلهای زنبق استفاده میکنیم که جنبه آموزشی داره .این دیتاست 150 تا نمونه داره و توش گلهای زنبق رو براساس ویژگیهایی مانند اندازه گلبرگ و کاسبرگ به سه کلاس virginica و versicolor و setosa تقسیم کرده.چون فرمت فایل csv هست با استفاده از کد زیر تو پایتون میتونیم محتوای این فایل بخونیم و برای هر ستون هم نامگذاری انجام بدیم :# Load dataset url = &quothttps://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv&quot names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class'] dataset = read_csv(url, names=names)این کد رو به فایل پروژه امون اضافه میکنیم . نکته ای که هست من به جای اینکه دیتاست رو از اینترنت بخونم دانلود کردم و تو لوکالم ریختم و از اونجا میخونمش. بنابراین کد من بصورت زیر است :# Load dataset mydataset = &quotC:\\Users\\USER\\Desktop\\machine\\iris.csv&quot names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class'] dataset = read_csv(mydataset, names=names)بخش اول که لوود کرد دیتاستمون بود رو تا اینجا تموم کردیم. میریم بخش خلاصه سازی دیتاستمونتو این مرحله یجورایی میخواییم آماری از ویژگی و مشاهده خود دیتاست و کلاس بندی و ... بدست بیاریم.خب همونطور که میدونید تعداد ردیفهای ما نمونه ها رو نشون میده و تعداد ستون هامون هم تعداد ویژگی هامون رو نشون میده.برای اینکه این تعداد رو ببینیم از دستور زیر استفاده میکنیم که باید مقدار 150 برای ردیفها و تعداد 5 برای ستونها رو برامون نشون بده.(ابعاد دیتاست رو نشون میده)# shape print(dataset.shape)تا اینجا برنامه ما خروجی خاصی نداشت ولی با اضافه کردن این دستور به برنامه امون حالا خروجی داریم و میتونیم برنامه امون رو تا اینجا اجراش کنیم و نتیجه رو ببینیم .(احتمالا برای بار اول یکمی طول بکشه اجراش)بعد از مشاهده ابعاد دیتاست اگه بخواییم خود دیتاست رو ببینیم هم میتونه جالب باشه.ولی چون تعدادش زیاد هست تو این دستور ما فقط 20 خط تولید میکنیم:# head print(dataset.head(20))بعد از اینکه دیتاست رو هم دیدیم بهتره که یک آماری از وضعیت ویژگیهامون داشته باشیم مثلا تعدادشون، میانگین و ماکزیمم و مینیموم و یسری درصدهای مهم .برای این همه اطلاعات جذاب کافیه این دستور رو اضافه کنیم :# descriptions print(dataset.describe())خب تنها چیزی که میتونه جالب باشه اینکه بدونیم کلاسامون هم چند تاست که در این دیتاست ما از هر کلاس 50 تا داریم.برای این هم کد زیر رو بهش اضافه میکنیم:# class distribution print(dataset.groupby('class').size())حالا اگه کدمون رو بطور کامل تا اینجا اجرا کنیم باید این خروجی رو بده (من تعداد 20 رو کردم 5 تا )بعد از لوود کردن و خلاصه آماری از دیتاستمون نوبت اینکه بتونیم دیتاستمون رو بصورت گرافیکی هم با نمودارها و شکلها هم نشون بدیم .برای اینکه نمودار جعبه ای هر ویژگی رو مشاهده کنیم از دستور زیر استفاده کنیم :# box and whisker plots dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False) pyplot.show()حالا اگه برنامه رو اجرا کنید این خروجی رو داریم :برای نمایش هیستوگرام از ویژگیهامونم میتونیم از این کد استفاده کنیم:# histograms dataset.hist() pyplot.show()خروجی هم که تصویر زیر هست:خب تا اینجا نمایش های ما براساس یک متغیر بود و الان میخوایم ارتباط بین متغیرها با هم رو هم بدونیم. برای اینکار کد زیر استفاده میکنیم که بصورت ماتریسی نشون میده که هر متغیر نسبت به متغیر دیگه چه ارتباطی رو میتونه داشته باشه.کد نهایی تا اینجا :# Load libraries from pandas import read_csv from pandas.plotting import scatter_matrix from matplotlib import pyplot from sklearn.model_selection import train_test_split from sklearn.model_selection import cross_val_score from sklearn.model_selection import StratifiedKFold from sklearn.metrics import classification_report from sklearn.metrics import confusion_matrix from sklearn.metrics import accuracy_score from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVC # Load dataset mydataset = &quotC:\\Users\\USER\\Desktop\\machine\\iris.csv&quot names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class'] dataset = read_csv(mydataset, names=names) # shape print(dataset.shape) # head print(dataset.head(5)) # descriptions print(dataset.describe()) # class distribution print(dataset.groupby('class').size()) # box and whisker plots dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False) pyplot.show() # histograms dataset.hist() pyplot.show() # scatter plot matrix scatter_matrix(dataset) pyplot.show()خب تا اینجا کافیه و تو درس بعدی میریم که کار با الگوریتمهای یادگیری رو جلو ببریم.