رگرسیون چندگانه

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Python-menu.png
موارد آموزشی
مدیریت فایل
یادگیری ماشین
۱شروع کار
۲میانگین، میانه، مُد
۳انحراف استاندارد
۴صدک
۵توزیع داده
۶توزیع داده نرمال
۷نمودار پراکندگی
۸رگرسیون خطی
۹رگرسیون چند جمله‌ای
۱۰رگرسیون چندگانه
۱۱مقیاس
۱۲آموزش / تست
۱۳درخت تصمیم
MySQL در پایتون
MongoDB در پایتون
مرجع پایتون
مرجع ماژول
چگونه در پایتون؟
مثال‌های پایتون

رگرسیون چندگانه مانند رگرسیون خطی است، اما با بیش از یک مقدار مستقل، به این معنی که سعی می‌کنیم مقداری را براساس دو یا چند متغیر پیش بینی کنیم.[۱]

به مجموعه داده زیر نگاهی بی‌اندازید، این مجموعه شامل اصلاعاتی در مورد ماشین‌ها است.

Car Model Volume Weight CO2
Toyota Aygo 1000 790 99
Mitsubishi Space Star 1200 1160 95
Skoda Citigo 1000 929 95
Fiat 500 900 865 90
Mini Cooper 1500 1140 105
VW Up! 1000 929 105
Skoda Fabia 1400 1109 90
Mercedes A-Class 1500 1365 92
Ford Fiesta 1500 1112 98
Audi A1 1600 1150 99
Hyundai I20 1100 980 99
Suzuki Swift 1300 990 101
Ford Fiesta 1000 1112 99
Honda Civic 1600 1252 94
Hundai I30 1600 1326 97
Opel Astra 1600 1330 97
BMW 1 1600 1365 99
Mazda 3 2200 1280 104
Skoda Rapid 1600 1119 104
Ford Focus 2000 1328 105
Ford Mondeo 1600 1584 94
Opel Insignia 2000 1428 99
Mercedes C-Class 2100 1365 99
Skoda Octavia 1600 1415 99
Volvo S60 2000 1415 99
Mercedes CLA 1500 1465 102
Audi A4 2000 1490 104
Audi A6 2000 1725 114
Volvo V70 1600 1523 109
BMW 5 2000 1705 114
Mercedes E-Class 2100 1605 115
Volvo XC70 2000 1746 117
Ford B-Max 1600 1235 104
BMW 2 1600 1390 108
Opel Zafira 1600 1405 109
Mercedes SLK 2500 1395 120

ما می‌توانیم میزان انتشار CO2 یک خودرو را بر اساس اندازه موتور پیش بینی کنیم، اما با رگرسیون چندگانه می‌توانیم متغیرهای بیشتری مانند وزن خودرو را هم در نظر بگیریم تا پیش بینی دقیق تر صورت گیرد.

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

در پایتون ماژول‌هایی داریم که این کار را برای ما انجام می‌دهند. با وارد کردن ماژول Pandas شروع کنید.

import pandas

ماژول Pandas امکان خواندن یک فایل csv را برای ما فراهم می‌کند و یک شیء DataFrame برمی‌گرداند.

df = pandas.read_csv("cars.csv")

سپس لیستی از مقدارهای مستقل ایجاد و کرده و آن را متغیر X می‌نامد.

مقدارهای وابسته را در متغیری به نام y قرار می‌دهد.

1 X = df[['Weight', 'Volume']]
2 y = df['CO2']
نکته: رایج است که نام مقدارهای مستقل با حرف X بزرگ و مقدارهای وابسته با y کوچک نشان داده شوند.

ما از چند متد در ماژول sklearn استفاده خواهیم کرد، بنابراین باید آن ماژول را نیز import کنیم:

from sklearn import linear_model

در ماژول sklearn خطی از متد LinearRegression() برای ایجاد یک شیء رگرسیون استفاده خواهیم کرد.

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

1 regr = linear_model.LinearRegression()
2 regr.fit(X, y)

اکنون یک شیء رگرسیون داریم که آماده است مقادیر CO2 را بر اساس وزن و حجم خودرو پیش بینی کند:

1 #predict the CO2 emission of a car where the weight is 2300g, and the volume is 1300ccm:
2 predictedCO2 = regr.predict([[2300, 1300]])

مثال

مثال را بطور کامل در عمل ببینید:

 1 import pandas
 2 from sklearn import linear_model
 3 
 4 df = pandas.read_csv("cars.csv")
 5 
 6 X = df[['Weight', 'Volume']]
 7 y = df['CO2']
 8 
 9 regr = linear_model.LinearRegression()
10 regr.fit(X, y)
11 
12 #predict the CO2 emission of a car where the weight is 2300g, and the volume is 1300ccm:
13 predictedCO2 = regr.predict([[2300, 1300]])
14 
15 print(predictedCO2)

نتیجه

Terminal.png How Does it Work?


مشاهدهٔ نتیجه


پیش بینی کرده‌ایم که یک اتومبیل با موتور ۱٫۳ لیتری و وزن ۲٫۳ کیلوگرم، تقریباً۱۰۷ گرم CO2 به ازاء هر کیلومتر رانندگی آزاد می کن..

ضریب (به انگلیسی: Coefficient)

ضریب عاملی است که رابطه با یک متغیر ناشناخته را توصیف می‌کند.

مثال: اگر x متغیر است ،2x دو برابر x است. x متغیر ناشناخته است، و عدد 2 ضریب است.

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

مثال

مقدارهای ضریب شیء رگرسیون را چاپ می‌کند:

 1 import pandas
 2 from sklearn import linear_model
 3 
 4 df = pandas.read_csv("cars.csv")
 5 
 6 X = df[['Weight', 'Volume']]
 7 y = df['CO2']
 8 
 9 regr = linear_model.LinearRegression()
10 regr.fit(X, y)
11 
12 print(regr.coef_)

نتیجه

Terminal.png Coefficient


مشاهدهٔ نتیجه


توضیح نتیجه

آرایه نتیجه مقدارهای ضریب وزن و حجم را نشان می‌دهد. وزن: ۰٫۰۰۷۵۵۰۹۵

حجم: ۰٫۰۰۷۸۰۵۲۶

این مقادیر به ما می‌گوید اگر وزن ۱ گرم افزایش یابد ، انتشار CO2 به اندازه ۰٫۰۰۷۵۵۰۹۵ گرم افزایش می‌یابد.

و اگر اندازه موتور (حجم) 1 ccm افزایش یابد ، انتشار CO2 با ۰٫۰۰۷۸۰۵۲۶ گرم افزایش می‌یابد.

فکر می‌کنم حدس درستی است اما بیایید آن را تست کنیم!

قبلاً پیش بینی کرده‌ایم که اگر خودرویی با موتور 1300ccm وزن ۲۳۰۰ گرم داشته باشد، میزان انتشار CO2 تقریباً ۱۰۷ گرم خواهد بود.

اگر وزن را ۱۰۰۰ گرم افزایش دهیم چه؟

مثال

مثال قبل را کپی می‌کند، اما وزن را از ۲۳۰۰ به ۳۳۰۰ تغییر داده‌است:

 1 import pandas
 2 from sklearn import linear_model
 3 
 4 df = pandas.read_csv("cars.csv")
 5 
 6 X = df[['Weight', 'Volume']]
 7 y = df['CO2']
 8 
 9 regr = linear_model.LinearRegression()
10 regr.fit(X, y)
11 
12 predictedCO2 = regr.predict([[3300, 1300]])
13 
14 print(predictedCO2)

نتیجه

Terminal.png Result Explained


مشاهدهٔ نتیجه


پیش بینی کرده‌ایم که یک اتومبیل با موتور ۱٫۳ لیتری و وزن ۳٫۳ کیلوگرم، تقریباً ۱۱۵ گرم CO2 را برای هر کیلومتر رانندگی آزاد می‌کند.

که نشان می‌دهد که ضریب ۰٫۰۰۷۵۵۰۹۵ صحیح است:

107.2087328 + (1000 * 0.00755095) = 114.75968


منابع آموزشی