021-71053903 [email protected] پشتیبانی از شنبه تا چهارشنبه ساعت 9 الی 16

پروژه یادگیری ماشین کار با دیتاست iris

با سلام خدمت شما دانشپذیران خوب وبسایت پایتونی ها با یک پروژه یادگیری ماشین دیگه در کنار شما دوستان خوب وبسایت پایتونی ها هستیم  در این پس می خواهیم پروژه یادگیری ماشین کار با دیتاست iris را به شما آموزش دهیم.

این پست دومین پروژه یادگیری ماشین شما کار با مجموعه داده معروف IRIS در پایتون که به عنوان یکی از پروژه های مهم در یادگیری ماشین به شمار میی آید.

ما اولین پروژه خود را برای پیش بینی حقوق با یادگیری ماشین بود در این پست به شما آموزش دادیم، اگر هنوز آن را تکمیل نکرده اید ، اینجا را کلیک کنید تا ابتدا آن آموزش را به پایان برسانید.

اولین پروژه ما پروژه یادگیری تحت نظارت ساده بر اساس رگرسیون بود. اکنون می توانیم پروژه ای را بر اساس الگوریتم طبقه بندی ایجاد کنیم.

مراحل مربوط به پروژه یادگیری ماشین عبارت است از:

  • درک و تعریف مشکل
  • تجزیه و تحلیل و آماده سازی داده ها
  • الگوریتم ها را اعمال کنید
  • خطاها را کاهش دهید
  • نتیجه را پیش بینی کنید

 

پروژه دوم ما

اجازه دهید گونه های یک گل را بر اساس عرض و اندازه گلبرگ پیش بینی کنیم:

مجموعه داده های گل IRIS شامل پارامترهای فیزیکی سه گونه از گل – Versicolor ، Setosa و Virginica است. پارامترهای عددی که مجموعه داده شامل عرض سپال ، طول سپال ، عرض گلبرگ و طول گلبرگ است. در این داده ها ، گونه های گل را بر اساس این پارامترها پیش بینی می کنیم. ما در حال ساخت یک پروژه یادگیری ماشین برای تعیین گونه های گل هستیم.

  • لطفاً توجه داشته باشید که این یک الگوریتم طبقه بندی تصویر نیست ، ما فقط اندازه ها را در قالب عدد (برای اهداف ساده) به الگوریتم ارائه می دهیم.

برای راه اندازی محیط پایتون دستور زیر را تایپ کنید:

اجازه دهید مطمئن شویم که محیط پایتون در حال کار است. دستور زیر را در ترمینال کپی کنید تا بررسی کنید که آیا به درستی کار می کند یا خیر

print('Hello World')

خوب ما آماده نوشتن نرم افزار خود هستیم. اول از همه که ما همه کتابخانه های مورد نیاز را برای پروژه خود وارد کنیم. بنابراین دستورات زیر را در ترمینال کپی-پیست کنید. (می توانید همه آنها را یکجا کپی کنید)

 

#Load libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC

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

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_5400/3879279915.py in <module>
      3 import numpy as np
      4 import matplotlib.pyplot as plt
----> 5 from sklearn import model_selection
      6 from sklearn.metrics import accuracy_score
      7 from sklearn.linear_model import LogisticRegression

ModuleNotFoundError: No module named 'sklearn'

برای نصب کتابخانه ها در محیط ژوپیتر نوتبوک باید از دستور زیر برای نصب هر یک از کتابخانه های استفاده کنید:

نصب کتابخانه Scikit-Learn:

!pip install scikit-learn

نصب کتابخانه Numpy:

!pip install numpy

نصب کتابخانه Matplotlib:

!pip install matplotlib

نصب کتابخانه Pandas:

!pip install pandas

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

# Install
!pip install scikit-learn
!pip install matplotlib
!pip install numpy
!pip install pandas

اجازه دهید مجموعه آموزشی IRIS flowers را بارگذاری کرده و آن را به متغیری به نام “dataset” اختصاص دهیم. ما از pandas برای بارگیری داده ها استفاده می کنیم. ما همچنین از pandas برای کشف داده ها با آمار توصیفی و تجسم داده ها استفاده خواهیم کرد.

#Load dataset
url = "https://pythoniha.ir/wp-content/uploads/datasets/iris.data.txt"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = pd.read_csv(url, names=names)

نگاهی به مجموعه داده های آموزشی مان بیندازیم:

پروژه یادگیری ماشین

پروژه یادگیری ماشین

ابعاد مجموعه داده ها: با استفاده از ویژگی shape مقدار ردیف و ستون خود را بیابید.

# shape
print(dataset.shape)

نتیجه: (150،5) ، این بدان معناست که مجموعه داده ما دارای 150 ردیف و 5 ستون است.

 

برای مشاهده 20 ردیف اول مجموعه داده ما :

print(dataset.head(20))

نتیجه :

    sepal-length  sepal-width  petal-length  petal-width        class
0            5.1          3.5           1.4          0.2  Iris-setosa
1            4.9          3.0           1.4          0.2  Iris-setosa
2            4.7          3.2           1.3          0.2  Iris-setosa
3            4.6          3.1           1.5          0.2  Iris-setosa
4            5.0          3.6           1.4          0.2  Iris-setosa
5            5.4          3.9           1.7          0.4  Iris-setosa
6            4.6          3.4           1.4          0.3  Iris-setosa
7            5.0          3.4           1.5          0.2  Iris-setosa
8            4.4          2.9           1.4          0.2  Iris-setosa
9            4.9          3.1           1.5          0.1  Iris-setosa
10           5.4          3.7           1.5          0.2  Iris-setosa
11           4.8          3.4           1.6          0.2  Iris-setosa
12           4.8          3.0           1.4          0.1  Iris-setosa
13           4.3          3.0           1.1          0.1  Iris-setosa
14           5.8          4.0           1.2          0.2  Iris-setosa
15           5.7          4.4           1.5          0.4  Iris-setosa
16           5.4          3.9           1.3          0.4  Iris-setosa
17           5.1          3.5           1.4          0.3  Iris-setosa
18           5.7          3.8           1.7          0.3  Iris-setosa
19           5.1          3.8           1.5          0.3  Iris-setosa

خلاصه آماری داده ها شامل شمارش ، میانگین ، حداقل و حداکثر و چند درصد را بیابید.

print(dataset.describe()

 

نتیجه:

sepal-length  sepal-width  petal-length  petal-width
count    150.000000   150.000000    150.000000   150.000000
mean       5.843333     3.054000      3.758667     1.198667
std        0.828066     0.433594      1.764420     0.763161
min        4.300000     2.000000      1.000000     0.100000
25%        5.100000     2.800000      1.600000     0.300000
50%        5.800000     3.000000      4.350000     1.300000
75%        6.400000     3.300000      5.100000     1.800000
max        7.900000     4.400000      6.900000     2.500000

 

 

اجازه دهید توزیع کلاس مجموعه داده را پیدا کنیم:

#class distribution
print(dataset.groupby('class').size())

خروجی:

Result: class Iris-setosa 50 Iris-versicolor 50 Iris-virginica 50 dtype: int64

این بدان معناست که مجموعه داده ما دارای توزیع یکنواخت 50 رکورد برای هر نوع گونه است.


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

# box and whisker plots
dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)
plt.show()
پروژه یادگیری ماشین

پروژه یادگیری ماشین

ما همچنین می توانیم یک هیستوگرام از هر متغیر ورودی ایجاد کنیم تا ایده ای از توزیع دریافت کنیم.

# histograms
dataset.hist()
plt.show()
یادگیری ماشین

یادگیری ماشین

برای درک اینکه چگونه هر ویژگی برای طبقه بندی داده ها ، می توان یک نمودار پراکندگی ایجاد کرد که همبستگی را با سایر ویژگی ها به ما نشان می دهد. این روش فقط به کشف ویژگی های مهمی که بیشترین طبقه بندی را در مدل ما دارند کمک می کند.مثال:

# scatter plot matrix
from pandas.plotting import scatter_matrix
scatter_matrix(dataset)
plt.show()
یادگیری ماشین

یادگیری ماشین

تقسیم داده ها
همانطور که قبلاً مشاهده کردیم ، در یادگیری ماشین ما دو نوع مجموعه داده داریم:

مجموعه آموزشی – برای آموزش مدل ما استفاده می شود
مجموعه داده های آزمایشی – برای آزمایش اینکه آیا مدل ما پیش بینی های دقیقی دارد ، مورد استفاده قرار می گیرد.
از آنجا که مجموعه داده ما کوچک است (150 رکورد) ، ما از 120 رکورد برای آموزش مدل و 30 رکورد برای ارزیابی مدل استفاده خواهیم کرد. دستورات زیر را کپی کنید تا مجموعه داده های ما آماده شود.

array = dataset.values
X = array[:,0:4]
Y = array[:,4]
x_train, x_test, y_train, y_test = model_selection.train_test_split(X, Y, test_size=0.2, random_state=7)

 

ارزیابی مدل و آموزش مدل
ما قصد داریم چهار الگوریتم زیر را برای این مشکل اعمال کرده و اثربخشی آن را ارزیابی کنیم. و در نهایت بهترین الگوریتم را انتخاب کرده و آن را آموزش دهید.

  • K – نزدیکترین همسایه (KNN)
  • پشتیبانی از دستگاه بردار (SVM)
  • جنگل تصادفی
  • رگرسیون لجستیک

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

model = KNeighborsClassifier()
model.fit(x_train,y_train)
predictions = model.predict(x_test)
print(accuracy_score(y_test, predictions))

نتیجه: 0.9

در مرحله بعد ، اجازه دهید مدل Support Vector Machine بر اساس اصل عملکرد شعاعی با پارامترهای پیش فرض آزمایش شود.

model = SVC()
model.fit(x_train,y_train)
predictions = model.predict(x_test)
print(accuracy_score(y_test, predictions))

نتیجه:0.8666666666666667

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

model = RandomForestClassifier(n_estimators=5)
model.fit(x_train,y_train)
predictions = model.predict(x_test)
print(accuracy_score(y_test, predictions))

نتیجه: 0.8666666666666667

اجازه دهید آخرین الگوریتم از لیست خود را امتحان کنیم. رگرسیون لجستیک:

model = LogisticRegression()
model.fit(x_train,y_train)
predictions = model.predict(x_test)
print(accuracy_score(y_test, predictions))

نتیجه: 0.8

لطفاً توجه داشته باشید: ممکن است نمره دقت شما متفاوت باشد زیرا ما انتخاب داده های آزمون خود را به صورت تصادفی انتخاب کرده ایم.

از طریق نمره ، می توان نتیجه گرفت که الگوریتم SVG در بین چهار مورد بسیار موثر تر است. مجموعه داده ما کوچک است ، بنابراین ما باید نمونه ها / داده های آموزشی بیشتری را بیابیم تا یک الگوریتم موثر را که برای موارد استفاده ما کار می کند ، پیدا کنیم.

خلاصه
در یادگیری ماشین، هیچ مدل یا الگوریتمی خاص وجود ندارد که بتواند به هر مجموعه داده 100٪ نتیجه دهد. در این پست ، گام به گام نحوه ایجاد و آموزش مدل با استفاده از الگوریتم طبقه بندی تحت نظارت پیدا کرده اید. حالا وقت آن است که بیشتر تمرین کنید در همین سایت می توانید تعداد بیشتری از مجموعه داده ها یا همان دیتاست هارا پیدا کنید و شروع به تمرین کنید فقط با تمرین کردن می توانید به کسب تجربه و مهارت بپردازید. اگر موردی یا مشکلی در پست بالا دیدی و نکته ای وجود داره که گفته نشده می توانید با به اشتراک گذاشتن آن زیر همین پست ما را مطلع کنید. ممنون از این که وقتتون رو برای خواندن این مقاله صرف کردید امیدواریم براتون مفید واقع شده باشه.

 

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

 

منبع :

دانلود باکس

محمدرضا حسنی

224 مطلب منتشر شده

دانش آموخته رشته فناوری اطلاعات / موسس پایتونی ها

درباره این مطلب نظر دهید !

مطالب پرمخاطب پایتونی ها

random forest

مدل جنگل تصادفی

2
دقیـقه مطالعه
ادامه ...

محصولات فروش پایتونی ها

%60
تخفیف

آموزش فیگما (Figma)

30,000 تومان
3
%69
تخفیف

آموزش برنامه نویسی پایتون

35,000 تومان
2