Maskininlärning - multivariat regression
- Föregående sida Polynomregression
- Nästa sida Zooma
Multivariabel regression (Multiple Regression)
Multivariabel regression liknar linjär regression, men har flera beroende variabler, vilket innebär att vi försöker förutsäga ett värde baserat på två eller flera variabler.
Se titta på följande dataset, vilket innehåller information om bilar.
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 |
Vi kan förutsäga bilens CO2-utsläpp baserat på motorns volym, men genom multipel regression kan vi introducera fler variabler, till exempel bilens vikt, för att göra förutsägelsen mer exakt.
Arbetsprincip
I Python har vi moduler som kan utföra detta. Först importera Pandas-modulen:
import pandas
Pandas-modulen låter oss läsa csv-filer och returnera ett DataFrame-objekt.
Denna fil används endast för teständamål, du kan ladda ner den här:cars.csv
df = pandas.read_csv("cars.csv")
Därefter listas oberoende värden och denna variabel namnges X.
Lägg relevanta värden i variabeln y.
X = df[['Weight', 'Volume']] y = df['CO2']
Tips:Ofta namnges oberoende värden som stora bokstäver X
och namnge listan med relevanta värden som lågt y
.
Vi kommer att använda några metoder från sklearn-modulen, så vi måste också importera modulen:
from sklearn import linear_model
I sklearn-modulen kommer vi att använda LinearRegression()
skapar ett linjärt regressionobjekt.
Objektet har en metod som fit()
metoden, som tar oberoende och beroende värden som parametrar och fyller regressionobjektet med data som beskriver detta förhållande:
regr = linear_model.LinearRegression() regr.fit(X, y)
Nu har vi ett regressionobjekt som kan förutsäga CO2-värden baserat på bilens vikt och volym:
# Förutsäga CO2-utsläpp för en bil med vikt 2300kg och volym 1300ccm: predictedCO2 = regr.predict([[2300, 1300]])
Exempel
Se hela exempel:
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) # Förutsäga CO2-utsläpp för en bil med vikt 2300kg och volym 1300ccm: predictedCO2 = regr.predict([[2300, 1300]]) print(predictedCO2)
Resultat:
[107.2087328]
Vi förutsäger att en bil med 1.3 liter motor och vikt på 2300 kg släpper ut cirka 107 gram CO2 per kilometer.
Koefficienter
Koefficienter är faktorer som beskriver förhållandet mellan okända variabler.
t.ex. om x
är en variabel, då 2x
är x
dubbel.x
är okända variabler, siffror 2
är koefficienter.
I detta fall kan vi be om koefficientvärdena för vikt jämfört med CO2 samt volym jämfört med CO2. Svaret vi får visar vad som händer om vi ökar eller minskar en av de beroende värdena.
Exempel
Skriv ut koefficientvärdena för regressionobjektet:
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_)
Resultat:
[0.00755095 0.00780526]
Resultatförklaring
Resultatet av arrayen representerar koefficientvärden för vikt och volym.
Vikt: 0.00755095 Volym: 0.00780526
Dessa värden visar oss att om vikt ökar med 1g, kommer utsläppet av CO2 att öka med 0.00755095g.
Om motorns storlek (volym) ökar med 1 ccm, kommer utsläppet av CO2 att öka med 0.00780526g.
Jag tror att detta är en rimlig gissning, men vänligen gör testet ändå!
Vi har redan förutspått att om en bil med en 1300ccm motor väger 2300 kilo, kommer koldioxidutsläppet att vara cirka 107 gram.
Vad händer om vi ökar vikten med 1000g?
Exempel
Kopiera det tidigare exemplet, men ändra bilvikten från 2300 till 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)
Resultat:
[114.75968007]
Vi har förutspått att en bil med en 1.3 liter motor och en vikt på 3.3 ton släpper ut cirka 115 gram koldioxid per kilometer.
Detta indikerar att koeficienten för 0.00755095 är korrekt:
107.2087328 + (1000 * 0.00755095) = 114.75968
- Föregående sida Polynomregression
- Nästa sida Zooma