آموزش هوش مصنوعی - جلسه 1

رگرسیون خطی یا Linear Regression


https://youtu.be/lcLdcHFRgeg


نسخه تصویری در یوتیوب : https://youtu.be/lcLdcHFRgeg
نسخه تصویری در نماشا : https://www.namasha.com/v/jJdsl4Es

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

یکی از الگوریتم های یادگیری ماشین Linear Regression هست که برای مواردی به کار میره که یک روند در اطلاعاتمون وجود داره. در موردش بیشتر صحبت خواهیم کرد. پس فعلا نفس راحتی بکشید و ادامه بدید.

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

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

- خوب فهمیدم دیگه بیخیال شو

- باشه :/

برای همین باید بتونیم این اطلاعات رو خونده و برای یاد دادن به ماشین آماده کنیم، برای این کار از کتابخانه های زیر استفاده و با دستور pip نصبشون میکنیم

pip install numpy
pip install pandas
pip install sklearn


دانلود اطلاعات‌‍

تقریبا از هر روشی میشه این اطلاعات اولیه رو جمع آوری کرد. میتونید خودتون آمار بگیرید یا برای ساده تر شدن کار و یادگیری سریع تر از دیتا های آماده ای که وجود داره استفاده کنید. تو این مثال از اطلاعات موجود در UCI Machine Learning Repository استفاده میکنیم که بطور رایگان برای استفاده عمومی موجوده و از لینک زیر میتونید دانلودش کنید:

https://archive.ics.uci.edu/ml/machine-learning-databases/00320/

فایل student.zip رو دانلود و بازش کنید. در فایلهای موجود 2 فایل دیتا وجود داره برای درسی ریاضی (mat) و زبان پرتغالی (por) که ما از نمرات درس ریاضی استفاده خواهیم کرد. فایل student.txt هم تمام خصوصیات مختلف رو در هر فایل به ترتیب توضیح داده که البته همین اطلاعات در صفحه خود این بانک اطلاعاتی هم وجود داره:

https://archive.ics.uci.edu/ml/datasets/Student+Performance


دیتاست دانش آموزان
دیتاست دانش آموزان


در این بانک اطلاعاتی 33 خصوصیت (Attribute) مختلف برای هر شاگرد وجود داره مثل سن ، جنسیت ، مدرسه ، نمرات کلاسی ، نمرات میان ترم ، نمره نهایی ، تعداد غیبت ها و ... که از اینها برای یاد دادن به ماشین استفاده میکنیم ، یعنی با اینها هوش مصنوعی میتونه حدس بزنه که نمرات نهایی مثلا چه چیزی میتونه باشه.


بنویس!

بالاخره کد نویسی شروع شد، کتابخونه های زیر رو وارد کنید:

import pandas as pd
import numpy as np
import sklearn
from sklearn import linear_model


خواندن اطلاعات

قدم بعدی خوندن و وارد کردن دیتایی هست که در مرحله قبل اون بالا دانلودش کردیم. pandas به راحتی این کار رو برامون انجام میده:

data = pd.read_csv(&quotstudent-mat.csv&quot, sep=&quot&quot)

برای اینکه مطمئن بشیم درست لود شده میتونیم قسمتی از دیتا ها رو با دستور زیر ببینیم:

print(data.head())

که باید یه چیزی شبیه به این باشه:

آماده سازی اطلاعات
آماده سازی اطلاعات


آماده سازی اطلاعات

همونطور که گفتم 33 تا خصوصیت مختلف در این دیتا وجود داره که البته ما قرار نیست از همه استفاده کنیم بنابر این باید چند تا رو انتخاب و بقیه رو حذف کنیم، برای این مثال نمرات کلاسی ، میان ترم و نهایی و همینطور زمان مطالعه ، نمرات منفی و غیبت ها رو انتخاب میکنیم، این دستور از بین همه خصوصیت ها مواردی رو که انتخاب کردیم نگه میداره و بقیه رو حذف میکنه:

data = data[[&quotG1&quot, &quotG2&quot, &quotG3&quot, &quotstudytime&quot, &quotfailures&quot, &quotabsences&quot]]

حالا data فقط شامل اطلاعاتی که نیاز داریم هست


جدا سازی دیتا

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

برای این کار اول خصوصیات و لیبل ها رو در یک آرایه قرار میدیم:

predict = "G3"
X = np.array(data.drop([predict], 1)) # Features
y = np.array(data[predict]) # Labels

بعد از این کار باید اطلاعاتمون رو همونطور که گفتیم باید اطلاعات رو به 2 بخش آموزش (90 درصد) و تست (10 درصد) تقسیم کنیم. برای این کار در sklearn تابع آماده ای وجود داره به نام train_test_split

x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size = 0.1)

حالا اطلاعات آماده است که مدلمون رو آموزش بدیم.


کد کامل:

import pandas as pd
import numpy as np
import sklearn
from sklearn import linear_model
from sklearn.utils import shuffle
data = pd.read_csv("student-mat.csv", sep=";")
data = data[["G1", "G2", "G3", "studytime", "failures", "absences"]]
predict = "G3"
X = np.array(data.drop([predict], 1))
y = np.array(data[predict])

x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size = 0.1)