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

رگرسیون خطی یا Linear Regression https://youtu.be/lcLdcHFRgeg نسخه تصویری در یوتیوب : https://youtu.be/lcLdcHFRgegنسخه تصویری در نماشا : https://www.namasha.com/v/jJdsl4Esتو این قسمت شروع میکنیم درباره ساده ترین حالت های ممکن و اصول پایه ای یادگیری ماشین صحبت کردن. یادگیری ماشین ارتباط تنگاتنگی با ریاضیات داره و دونستن یک سری از مباحث ریاضی (همون چیزایی که فکر میکردیم همیشه بیخود داریم یاد میگیریم) اینجا به کارمون میاد.یکی از الگوریتم های یادگیری ماشین Linear Regression هست که برای مواردی به کار میره که یک روند در اطلاعاتمون وجود داره. در موردش بیشتر صحبت خواهیم کرد. پس فعلا نفس راحتی بکشید و ادامه بدید.نصب کتابخانه هاپایه اصلی هر هوش مصنوعی اطلاعات قبلی هست، یعنی ورودی هایی (اطلاعات) که از منابع مختلف جمع شدن مثل قیمت خونه ها و مشخصاتشون یا نمرات دانش آموزان و شرایط تحصیلیشون یا قیمت ماشین و شرایط و امکاناتش یا ... - خوب فهمیدم دیگه بیخیال شو- باشه :/برای همین باید بتونیم این اطلاعات رو خونده و برای یاد دادن به ماشین آماده کنیم، برای این کار از کتابخانه های زیر استفاده و با دستور pip نصبشون میکنیمpip install numpypip install pandaspip 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)) # Featuresy = np.array(data[predict]) # Labelsبعد از این کار باید اطلاعاتمون رو همونطور که گفتیم باید اطلاعات رو به 2 بخش آموزش (90 درصد) و تست (10 درصد) تقسیم کنیم. برای این کار در sklearn تابع آماده ای وجود داره به نام train_test_splitx_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size = 0.1)حالا اطلاعات آماده است که مدلمون رو آموزش بدیم.کد کامل:import pandas as pdimport numpy as npimport sklearnfrom sklearn import linear_modelfrom sklearn.utils import shuffledata = 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)