Ko‘p omilli regressiya
Ko‘p regressiya
Ko‘p regressiya chiziqli regressiyaga o‘xshaydi, lekin bir nechta mustaqil qiymatga ega, ya’ni biz ikki yoki undan ortiq o‘zgaruvchilarga asoslangan qiymatni taxmin qilishga harakat qilamiz.
Quyidagi ma’lumotlar to‘plamini ko‘rib chiqing, unda avtomobillar haqida ba’zi ma’lumotlar mavjud.
| Avtomobil | Model | Ovoz balandligi | Og‘irligi | CO2 |
| Toyota | Aygo | 1000 | 790 | 99 |
| Mitsubishi | Kosmik yulduz | 1200 | 1160 | 95 |
| Skoda | Citigo | 1000 | 929 | 95 |
| Fiat | 500 | 900 | 865 | 90 |
| Mini | Kuper | 1500 | 1140 | 105 |
| VW | Up! | 1000 | 929 | 105 |
| Skoda | Fabia | 1400 | 1109 | 90 |
| Mersedes | A-sinfi | 1500 | 1365 | 92 |
| Ford | Fiesta | 1500 | 1112 | 98 |
| Audi | A1 | 1600 | 1150 | 99 |
| Hyundai | I20 | 1100 | 980 | 99 |
| Suzuki | Tezkor | 1300 | 990 | 101 |
| Ford | Fiesta | 1000 | 1112 | 99 |
| Honda | Fuqarolik | 1600 | 1252 | 94 |
| Hunday | I30 | 1600 | 1326 | 97 |
| Opel | Astra | 1600 | 1330 | 97 |
| BMW | 1 | 1600 | 1365 | 99 |
| Mazda | 3 | 2200 | 1280 | 104 |
| Skoda | Tez | 1600 | 1119 | 104 |
| Ford | Diqqat | 2000 | 1328 | 105 |
| Ford | Mondeo | 1600 | 1584 | 94 |
| Opel | Belgilar | 2000 | 1428 | 99 |
| Mersedes | C-sinfi | 2100 | 1365 | 99 |
| Skoda | Octavia | 1600 | 1415 | 99 |
| Volvo | S60 | 2000 | 1415 | 99 |
| Mersedes | CLA | 1500 | 1465 | 102 |
| Audi | A4 | 2000 | 1490 | 104 |
| Audi | A6 | 2000 | 1725 | 114 |
| Volvo | V70 | 1600 | 1523 | 109 |
| BMW | 5 | 2000 | 1705 | 114 |
| Mersedes | E-Class | 2100 | 1605 | 115 |
| Volvo | XC70 | 2000 | 1746 | 117 |
| Ford | B-Maks | 1600 | 1235 | 104 |
| BMW | 2 | 1600 | 1390 | 108 |
| Opel | Zafira | 1600 | 1405 | 109 |
| Mersedes | SLK | 2500 | 1395 | 120 |
Dvigatel hajmiga qarab avtomobilning CO2 emissiyasini taxmin qilishimiz mumkin, ammo ko‘p regressiya bilan biz bashoratni aniqroq qilish uchun avtomobilning og‘irligi kabi ko‘proq o‘zgaruvchilarni kiritishimiz mumkin.
U qanday ishlaydi?
Pythonda biz uchun ishni bajaradigan modullar mavjud. Pandas modulini import qilish bilan boshlang.
import pandas
Pandas moduli haqida bizning Pandas qo‘llanmamizda bilib oling.
Pandas moduli bizga csv fayllarni o‘qish va DataFrame obyektini qaytarish imkonini beradi.
Fayl faqat sinov uchun mo‘ljallangan, uni bu yerdan yuklab olishingiz mumkin: data.csv
df = pandas.read_csv("data.csv")
Keyin mustaqil qiymatlar ro‘yxatini tuzing va ushbu o‘zgaruvchini X deb nomlang.
Bog‘liq qiymatlarni y deb nomlangan o‘zgaruvchiga qo‘ying.
X = df[['Weight', 'Volume']]
y = df['CO2']
Maslahat: Mustaqil qiymatlar ro‘yxatini katta X harfi bilan, bog‘liq qiymatlar ro‘yxatini esa kichik y harfi bilan nomlash odatiy holdir.
Biz sklearn modulidan ba’zi usullardan foydalanamiz, shuning uchun biz ushbu modulni ham import qilishimiz kerak bo‘ladi:
from sklearn import linear_model
Sklearn modulidan chiziqli regressiya obyektini yaratish uchun LinearRegression() usulidan foydalanamiz.
Ushbu obyektda fit() deb nomlangan usul mavjud bo‘lib, u mustaqil va bog‘liq qiymatlarni parametr sifatida qabul qiladi va regressiya obyektini munosabatlarni tavsiflovchi ma’lumotlar bilan to‘ldiradi:
regr = linear_model.LinearRegression()
regr.fit(X, y)
Endi bizda avtomobilning og‘irligi va hajmiga qarab CO2 qiymatlarini bashorat qilishga tayyor bo‘lgan regressiya obyekti mavjud:
#predict the CO2 emission of a car where the weight
is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
Misol
To‘liq misolni amalda ko‘ring:
import pandas
from sklearn import linear_model
df = pandas.read_csv("data.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr = linear_model.LinearRegression()
regr.fit(X, y)
#predict the CO2 emission of a car where the weight is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)
Natija:
[107.2087328]
Biz 1,3 litrli dvigatelli va og‘irligi 2300 kg bo‘lgan avtomobil har bir kilometr masofada taxminan 107 gramm CO2 chiqarishini taxmin qilgan edik.
Koeffitsient
Koeffitsient - noma’lum o‘zgaruvchi bilan bog‘liqlikni tavsiflovchi omil.
Misol: agar x o‘zgaruvchi bo‘lsa,2x ikki marta x bo‘ladi. x - noma’lum o‘zgaruvchi, 2 raqami esa koeffitsientdir.
Bunday holda, biz CO2 ga nisbatan og‘irlikning koeffitsient qiymatini va CO2 ga nisbatan hajmni so‘rashimiz mumkin. Biz olgan javob(lar) mustaqil qiymatlardan birini oshirsak yoki kamaytirsak nima bo‘lishini aytadi.
Misol
Regressiya obyektining koeffitsient qiymatlarini chop eting:
import pandas
from sklearn import linear_model
df = pandas.read_csv("data.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr = linear_model.LinearRegression()
regr.fit(X, y)
print(regr.coef_)
Natija:
[0.00755095 0.00780526]
Natija tushuntirildi
Natijalar massivi og‘irlik va hajmning koeffitsient qiymatlarini ifodalaydi.
Weight: 0.00755095
Volume: 0.00780526
Bu qiymatlar, agar vazn 1 kg ga oshsa, CO2 emissiyasi 0,00755095 g ga oshadi.
Va agar dvigatel hajmi (Hajmi) 1 sm3 ga oshsa, CO2 emissiyasi 0,00780526 g ga oshadi.
Menimcha, bu adolatli taxmin, lekin buni sinab ko‘ring!
Biz allaqachon bashorat qilgan edik, agar dvigateli 1300 sm3 bo‘lgan avtomobilning og‘irligi 2300 kg bo‘lsa, CO2 emissiyasi taxminan 107 g bo‘ladi.
Agar vaznni 1000 kg ga oshirsak nima bo‘ladi?
Misol
Oldingi misoldan nusxa ko‘chiring, lekin vaznni 2300 dan 3300 gacha o‘zgartiring:
import pandas
from sklearn import linear_model
df = pandas.read_csv("data.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr = linear_model.LinearRegression()
regr.fit(X, y)
predictedCO2 = regr.predict([[3300, 1300]])
print(predictedCO2)
Natija:
[114.75968007]
Biz 1,3 litrli dvigatelli va og‘irligi 3300 kg bo‘lgan avtomobil har bir kilometr masofada taxminan 115 gramm CO2 chiqarishini taxmin qilgan edik.
Bu 0,00755095 koeffitsienti to‘g‘ri ekanligini ko‘rsatadi:
107.2087328 + (1000 * 0.00755095) = 114.75968
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
