رگرسیون چندگانه
رگرسیون چندگانه مانند رگرسیون خطی است، اما با بیش از یک مقدار مستقل، به این معنی که سعی میکنیم مقداری را براساس دو یا چند متغیر پیش بینی کنیم.[۱]
به مجموعه داده زیر نگاهی بیاندازید، این مجموعه شامل اصلاعاتی در مورد ماشینها است.
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']
ما از چند متد در ماژول 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)
نتیجه
پیش بینی کردهایم که یک اتومبیل با موتور ۱٫۳ لیتری و وزن ۲٫۳ کیلوگرم، تقریباً۱۰۷ گرم 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_)
نتیجه
توضیح نتیجه
آرایه نتیجه مقدارهای ضریب وزن و حجم را نشان میدهد. وزن: ۰٫۰۰۷۵۵۰۹۵
حجم: ۰٫۰۰۷۸۰۵۲۶
این مقادیر به ما میگوید اگر وزن ۱ گرم افزایش یابد ، انتشار 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)
نتیجه
پیش بینی کردهایم که یک اتومبیل با موتور ۱٫۳ لیتری و وزن ۳٫۳ کیلوگرم، تقریباً ۱۱۵ گرم CO2 را برای هر کیلومتر رانندگی آزاد میکند.
که نشان میدهد که ضریب ۰٫۰۰۷۵۵۰۹۵ صحیح است:
107.2087328 + (1000 * 0.00755095) = 114.75968
منابع آموزشی