aidinism
aidinism
خواندن ۲ دقیقه·۵ سال پیش

آموزش هوش مصنوعی - جلسه 2 - Linear Regression

در این جلسه در مورد اصول Linear Regression صحبت میکنیم و اینکه چه جوری کار میکنه

آموزش ویدیویی این درس رو می تونید در یوتیوب یا نماشا ببینید:

نماشا:

https://www.namasha.com/v/MbgLqcle

یوتیوب:

https://www.youtube.com/watch?v=FxGGC1d7pLI


چگونه کار می کنه؟

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

این خط با معادله y = m * x + b تعریف میشه و تمام کاری که این مدل انجام میده پیدا کردن پارامتر های این معادله است.

متغیر m ضریب هست و نشان میده شیب خط چقدر هست

متغیر b عرض از مبدا هست و نشون میده خط کجا محور y رو قطع میکنه

برای پیدا کردن شیب کافیه 2 نقطه روی خط رو انتخاب کنیم (p1 , p2) و با استفاده از فرمول زیر شیب یا همون m رو محاسبه کنیم:

m = (y2 - y1) / (x2 - x1)

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

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

پیاده سازی الگوریتم

حالا که نحوه کارکرد این الگوریتم رو متوجه شدیم میتونیم اون رو پیاده سازی کنیم. برای این کار اول باید یک مدل Linear Regression بسازیم:

linear = linear_model.LinearRegression()

سپس این مدل رو با استفاده از اطلاعاتی که قبلا آماده کردیم ، آموزش میدیم ( fit ) :

linear.fit(x_train, y_train) acc = linear.score(x_test, y_test) # acc stands for accuracy

و برای دیدن مقدار دقت acc رو چاپ میکنیم:

print(acc)

علاوه بر این میتونیم با دستورات زیر مقدار شیب و عرض از مبدا رو هم ببینیم:

print('Coefficient: \n', linear.coef_) # These are each slope value print('Intercept: \n', linear.intercept_) # This is the intercept

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

predictions = linear.predict(x_test) # Gets a list of all predictions for x in range(len(predictions)): print(predictions[x], x_test[x], y_test[x])

و خروجی ما چیزی شبیه به این هست:


کد کامل این درس:

import pandas as pd import numpy as np import sklearn from sklearn import linear_model from sklearn.utils import shuffle data = pd.read_csv(&quotstudent-mat.csv&quot, sep="&quot) data = data[[&quotG1&quot, &quotG2&quot, &quotG3&quot, &quotstudytime&quot, &quotfailures&quot, &quotabsences&quot]] predict = &quotG3&quot 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) linear = linear_model.LinearRegression() linear.fit(x_train, y_train) acc = linear.score(x_test, y_test) print(acc) print('Coefficient: \n', linear.coef_) print('Intercept: \n', linear.intercept_) predictions = linear.predict(x_test) for x in range(len(predictions)): print(predictions[x], x_test[x], y_test[x])


هوش مصنوعییادگیری ماشینپایتونبرنامه نویسیآموزش
معمار نرم افزار، مستند ساز، آموزگار @کالیفرنیا Software Architect, Documentary Producer, Educator @California
شاید از این پست‌ها خوشتان بیاید