Machine learning - meervoudige regressie
Meervoudige regressie
Meervoudige regressie is als lineaire regressie , maar met meer dan één onafhankelijke waarde, wat betekent dat we een waarde proberen te voorspellen op basis van twee of meer variabelen.
Bekijk hieronder de dataset, deze bevat wat informatie over auto's.
Auto | Model | Volume | Gewicht | CO2 |
Toyota | Aygo | 1000 | 790 | 99 |
Mitsubishi | Ruimte ster | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
Fiat | 500 | 900 | 865 | 90 |
Mini | Kuiper | 1500 | 1140 | 105 |
VW | Omhoog! | 1000 | 929 | 105 |
Skoda | Fabia | 1400 | 1109 | 90 |
Mercedes | Een klas | 1500 | 1365 | 92 |
Ford | fiesta | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Hyundai | I20 | 1100 | 980 | 99 |
Suzuki | Snel | 1300 | 990 | 101 |
Ford | fiesta | 1000 | 1112 | 99 |
Honda | burgerlijk | 1600 | 1252 | 94 |
Hyundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | snel | 1600 | 1119 | 104 |
Ford | Focus | 2000 | 1328 | 105 |
Ford | Mondeo | 1600 | 1584 | 94 |
Opel | insigne | 2000 | 1428 | 99 |
Mercedes | C-Klasse | 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-Klasse | 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 |
We kunnen de CO2-uitstoot van een auto voorspellen op basis van de grootte van de motor, maar met meervoudige regressie kunnen we meer variabelen invoeren, zoals het gewicht van de auto, om de voorspelling nauwkeuriger te maken.
Hoe werkt het?
In Python hebben we modules die het werk voor ons doen. Begin met het importeren van de Pandas-module.
import pandas
Leer meer over de Panda's-module in onze Panda's Tutorial .
Met de Pandas-module kunnen we csv-bestanden lezen en een DataFrame-object retourneren.
Het bestand is alleen bedoeld voor testdoeleinden, u kunt het hier downloaden: cars.csv
df = pandas.read_csv("cars.csv")
Maak vervolgens een lijst van de onafhankelijke waarden en noem deze variabele X
.
Zet de afhankelijke waarden in een variabele met de naam y
.
X = df[['Weight', 'Volume']]
y = df['CO2']
Tip: Het is gebruikelijk om de lijst met onafhankelijke waarden een hoofdletter X te geven en de lijst met afhankelijke waarden een kleine letter y.
We zullen enkele methoden uit de sklearn-module gebruiken, dus we zullen die module ook moeten importeren:
from sklearn import linear_model
Vanuit de sklearn-module zullen we de LinearRegression()
methode gebruiken om een lineair regressieobject te maken.
Dit object heeft een aangeroepen methode fit()
die de onafhankelijke en afhankelijke waarden als parameters neemt en het regressieobject vult met gegevens die de relatie beschrijven:
regr = linear_model.LinearRegression()
regr.fit(X, y)
Nu hebben we een regressie-object dat klaar is om CO2-waarden te voorspellen op basis van het gewicht en het volume van een auto:
#predict the CO2 emission of a car where the weight
is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
Voorbeeld
Bekijk het hele voorbeeld in actie:
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]
We hebben voorspeld dat een auto met een motor van 1,3 liter en een gewicht van 2300 kg per gereden kilometer ongeveer 107 gram CO2 zal uitstoten.
Coëfficiënt
De coëfficiënt is een factor die de relatie met een onbekende variabele beschrijft.
Voorbeeld: als x
is een variabele, dan
2x
is x
twee keer. x
is de onbekende variabele, en het getal 2
is de coëfficiënt.
In dit geval kunnen we vragen om de coëfficiënt van gewicht tegen CO2 en om volume tegen CO2. Het antwoord of de antwoorden die we krijgen, vertelt ons wat er zou gebeuren als we een van de onafhankelijke waarden verhogen of verlagen.
Voorbeeld
Druk de coëfficiëntwaarden van het regressieobject af:
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 uitgelegd
De resultatenarray vertegenwoordigt de coëfficiëntwaarden van gewicht en volume.
Gewicht: 0.00755095
Volume: 0.00780526
Deze waarden vertellen ons dat als het gewicht met 1 kg toeneemt, de CO2-uitstoot met 0,00755095 g toeneemt.
En als de motorinhoud (Volume) met 1 cm 3 toeneemt, neemt de CO2-uitstoot toe met 0,00780526 g.
Ik denk dat dat een eerlijke gok is, maar laat het testen!
We hebben al voorspeld dat als een auto met een 1300cm 3 motor 2300kg weegt, de CO2-uitstoot ongeveer 107g zal zijn.
Wat als we het gewicht met 1000 kg verhogen?
Voorbeeld
Kopieer het voorbeeld van eerder, maar verander het gewicht van 2300 naar 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]
We hebben voorspeld dat een auto met een motor van 1,3 liter en een gewicht van 3300 kg per gereden kilometer ongeveer 115 gram CO2 zal uitstoten.
Waaruit blijkt dat de coëfficiënt van 0,00755095 correct is:
107.2087328 + (1000 * 0.00755095) = 114.75968