آموزش ماشینآموزی - مدلهای چندمتغیره
- صفحه قبلی برگردان چندگانه
- صفحه بعدی تغییر اندازه
برعکسسازی چندگانه (Multiple Regression)
برعکسسازی چندگانه مانند برعکسسازی خطی است، اما دارای چندین مقدار مستقل است، این به این معناست که ما سعی میکنیم بر اساس دو یا چند متغیر یک مقدار را پیشبینی کنیم.
لطفاً دادههای زیر را مشاهده کنید، که شامل اطلاعات مربوط به خودروهاست.
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 |
ما میتوانیم مقدار تولید دی اکسید کربن را بر اساس حجم موتور پیشبینی کنیم، اما با استفاده از چند متغیر بازگشتی، میتوانیم متغیرهای بیشتری مانند وزن خودرو را وارد کنیم تا پیشبینی دقیقتری داشته باشیم.
روش کار
در Python، ما دارای ماژولهایی هستیم که میتوانند این کار را انجام دهند. ابتدا ماژول Pandas را وارد کنید:
import pandas
ماژول Pandas به ما اجازه میدهد تا فایلهای csv را بخوانیم و یک شیء DataFrame بازگرداند.
این فایل تنها برای اهداف تست استفاده میشود و شما میتوانید آن را از اینجا دانلود کنید:cars.csv
df = pandas.read_csv("cars.csv")
سپس مقادیر مستقل را لیست کنید و این متغیر را X نامگذاری کنید.
مقدارهای مرتبط را در متغیر y قرار دهید.
X = df[['Weight', 'Volume']] y = df['CO2']
نکته:معمولاً لیست مقادیر مستقل را به نام بزرگ X
، لیست مقادیر مرتبط را به نام کوچک y
.
استفاده خواهیم کرد، بنابراین باید این ماژول را وارد کنیم:
from sklearn import linear_model
در ماژول sklearn، ما از LinearRegression()
دارد که یک شیء بازگشتی خطی ایجاد میکند.
این شیء یک روش به نام fit()
روشی که مستقلها و وابستهها را به عنوان پارامترها در نظر میگیرد و دادههای توصیفکنندهی این رابطه را در شیء بازگشتی پر میکند:
regr = linear_model.LinearRegression() regr.fit(X, y)
حالا، ما یک شیء بازگشتی داریم که میتواند مقدار دی اکسید کربن را بر اساس وزن و ظرفیت خودرو پیشبینی کند:
# پیشبینی مقدار تولید دی اکسید کربن برای خودرویی با وزن 2300kg و ظرفیت 1300ccm: predictedCO2 = regr.predict([[2300, 1300]])
مثال
لطفاً مثال کامل را ببینید:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) # پیشبینی مقدار تولید دی اکسید کربن برای خودرویی با وزن 2300kg و ظرفیت 1300ccm: predictedCO2 = regr.predict([[2300, 1300]]) print(predictedCO2)
نتیجه:
[107.2087328]
ما پیشبینی میکنیم که یک خودروی مجهز به موتور 1.3 لیتری با وزن 2300 کیلوگرم، در هر 1 کیلومتر مسافت، حدود 107 گرم دی اکسید کربن آزاد خواهد کرد.
ضرایب
ضرایب عوامل توصیفکنندهی رابطهی بین متغیرهای نامعلوم هستند.
مثلاً: اگر x
اگر متغیر باشد، 2x
این x
دوبرابر است.x
این متغیر نامعلوم، عدد 2
این ضرایب هستند.
در این حالت، میتوانیم درخواست کنیم که ضرایب وزن در برابر دی اکسید کربن و ضرایب حجم در برابر دی اکسید کربن را بدانیم. پاسخی که دریافت میکنیم به ما میگوید که اگر یکی از مقادیر مستقل را افزایش یا کاهش دهیم، چه اتفاقی خواهد افتاد.
مثال
مقدار ضرایب شیء بازگشتی را چاپ کنید:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) print(regr.coef_)
نتیجه:
[0.00755095 0.00780526]
توضیح نتایج
آرایهی نتایج نشاندهندهی ضرایب وزن و ظرفیت است.
Weight: 0.00755095 Volume: 0.00780526
این مقادیر به ما میگویند که اگر وزن به 1g افزایش یابد، مقدار تولید دی اکسید کربن افزایش خواهد یافت به میزان 0.00755095g.
اگر حجم موتور (ظرفیت) به 1 ccm افزایش یابد، مقدار تولید دی اکسید کربن افزایش خواهد یافت به میزان 0.00780526g.
من فکر میکنم این پیشبینی معقولی است، اما لطفاً آن را تست کنید!
ما پیشبینی کردهایم که اگر یک خودرو با موتور 1300cc و وزن 2300 کیلوگرم داشته باشیم، میزان انتشار دیاکسید کربن حدود 107 گرم خواهد بود.
اگر وزن خودرو 1000 گرم اضافه شود، چه خواهد شد؟
مثال
مثال قبلی را کپی کنید، اما وزن خودرو را از 2300 به 3300 تغییر دهید:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) predictedCO2 = regr.predict([[3300, 1300]]) print(predictedCO2)
نتیجه:
[114.75968007]
ما پیشبینی کردهایم که یک خودرو با موتور 1.3 لیتری و وزن 3.3 تن، با هر 1 کیلومتر حرکت، حدود 115 گرم دیاکسید کربن آزاد میکند.
این نشان میدهد که coefficient 0.00755095 صحیح است:
107.2087328 + (1000 * 0.00755095) = 114.75968
- صفحه قبلی برگردان چندگانه
- صفحه بعدی تغییر اندازه