Masjienleer - Veelvuldige regressie
Meervoudige regressie
Meervoudige regressie is soos lineêre regressie , maar met meer as een onafhanklike waarde, wat beteken dat ons probeer om 'n waarde te voorspel gebaseer op twee of meer veranderlikes.
Kyk na die datastel hieronder, dit bevat inligting oor motors.
Voertuig | Model | Volume | Gewig | CO2 |
Toyota | Aygo | 1000 | 790 | 99 |
Mitsubishi | Ruimte Ster | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
Fiat | 500 | 900 | 865 | 90 |
Mini | Cooper | 1500 | 1140 | 105 |
VW | Op! | 1000 | 929 | 105 |
Skoda | Fabia | 1400 | 1109 | 90 |
Mercedes | A-klas | 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 | Burgerlik | 1600 | 1252 | 94 |
Hyundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Vinnig | 1600 | 1119 | 104 |
Ford | Fokus | 2000 | 1328 | 105 |
Ford | Mondeo | 1600 | 1584 | 94 |
Opel | Kenteken | 2000 | 1428 | 99 |
Mercedes | C-klas | 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-klas | 2100 | 1605 | 115 |
Volvo | XC70 | 2000 | 1746 | 117 |
Ford | B-Maks | 1600 | 1235 | 104 |
BMW | 2 | 1600 | 1390 | 108 |
Opel | Zafira | 1600 | 1405 | 109 |
Mercedes | SLK | 2500 | 1395 | 120 |
Ons kan die CO2-emissie van 'n motor voorspel op grond van die grootte van die enjin, maar met veelvuldige regressie kan ons meer veranderlikes, soos die gewig van die motor, ingooi om die voorspelling meer akkuraat te maak.
Hoe werk dit?
In Python het ons modules wat die werk vir ons sal doen. Begin deur die Pandas-module in te voer.
import pandas
Kom meer te wete oor die Pandas-module in ons Pandas-tutoriaal .
Die Pandas-module stel ons in staat om csv-lêers te lees en 'n DataFrame-objek terug te stuur.
Die lêer is slegs vir toetsdoeleindes bedoel, jy kan dit hier aflaai: cars.csv
df = pandas.read_csv("cars.csv")
Maak dan 'n lys van die onafhanklike waardes en noem hierdie veranderlike X
.
Plaas die afhanklike waardes in 'n veranderlike genaamd y
.
X = df[['Weight', 'Volume']]
y = df['CO2']
Wenk: Dit is algemeen om die lys van onafhanklike waardes met 'n hoofletter X te noem, en die lys van afhanklike waardes met 'n kleinletter y.
Ons sal 'n paar metodes van die sklearn-module gebruik, so ons sal daardie module ook moet invoer:
from sklearn import linear_model
Vanuit die sklearn-module sal ons die LinearRegression()
metode gebruik om 'n lineêre regressie-objek te skep.
Hierdie objek het 'n metode genoem fit()
wat die onafhanklike en afhanklike waardes as parameters neem en die regressie-objek vul met data wat die verwantskap beskryf:
regr = linear_model.LinearRegression()
regr.fit(X, y)
Nou het ons 'n regressie-voorwerp wat gereed is om CO2-waardes te voorspel gebaseer op 'n motor se gewig en volume:
#predict the CO2 emission of a car where the weight
is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
Voorbeeld
Sien die hele voorbeeld in aksie:
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)
#predict the CO2
emission of a car where the weight is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)
Resultaat:
[107.2087328]
Ons het voorspel dat 'n motor met 'n 1,3 liter-enjin, en 'n gewig van 2300 kg, ongeveer 107 gram CO2 sal vrystel vir elke kilometer wat hy ry.
Koëffisiënt
Die koëffisiënt is 'n faktor wat die verwantskap met 'n onbekende veranderlike beskryf.
Voorbeeld: as x
'n veranderlike is, dan
2x
is dit x
twee keer. x
is die onbekende veranderlike, en die getal 2
is die koëffisiënt.
In hierdie geval kan ons vra vir die koëffisiëntwaarde van gewig teenoor CO2, en vir volume teenoor CO2. Die antwoord(e) wat ons kry, vertel ons wat sal gebeur as ons een van die onafhanklike waardes verhoog, of verlaag.
Voorbeeld
Druk die koëffisiëntwaardes van die regressie-voorwerp:
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_)
Resultaat:
[0.00755095 0.00780526]
Resultaat verduidelik
Die resultaatskikking verteenwoordig die koëffisiëntwaardes van gewig en volume.
Gewig: 0,00755095
Volume: 0,00780526
Hierdie waardes sê vir ons dat as die gewig met 1 kg toeneem, die CO2-emissie met 0,00755095g toeneem.
En as die enjingrootte (Volume) met 1 cm 3 toeneem, verhoog die CO2-emissie met 0,00780526 g.
Ek dink dit is 'n regverdige raaiskoot, maar laat dit toets!
Ons het reeds voorspel dat as 'n motor met 'n 1300cm 3 -enjin 2300kg weeg, die CO2-emissie ongeveer 107g sal wees.
Wat as ons die gewig verhoog met 1000kg?
Voorbeeld
Kopieer die voorbeeld van voorheen, maar verander die gewig van 2300 na 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)
Resultaat:
[114.75968007]
Ons het voorspel dat 'n motor met 1,3 liter-enjin, en 'n gewig van 3300 kg, ongeveer 115 gram CO2 sal vrystel vir elke kilometer wat hy ry.
Wat wys dat die koëffisiënt van 0.00755095 korrek is:
107,2087328 + (1000 * 0,00755095) = 114,75968