Teollisuus koneoppiminen - monivaiheinen regressio

Monivaiheinen regressio (Multiple Regression)

Monivaiheinen regressio on samanlaista kuin lineaarinen regressio, mutta sillä on useita riippumattomia arvoja, mikä tarkoittaa, että pyrimme ennustamaan arvoa kahden tai useamman muuttujan perusteella.

Katso seuraava tietorakenne, joka sisältää tietoja autoista.

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

我们可以根据发动机排量的大小预测汽车的二氧化碳排放量,但是通过多元回归,我们可以引入更多变量,例如汽车的重量,以使预测更加准确。

Voimme ennustaa autojen CO2-päästöjä moottorin säiliötilavuuden perusteella, mutta monivaiheisella regressiolla voimme ottaa mukaan lisää muuttujia, kuten auton painoa, jotta ennuste on tarkempi.

Työskentelytapa

import pandas

Pandas-moduuli mahdollistaa csv-tiedostojen lukemisen ja palauttaa DataFrame-objektin.

Tämä tiedosto käytetään vain testitarkoituksiin, voit ladata sen täältä:cars.csv

df = pandas.read_csv("cars.csv")

Lisää sitten riippumattomat arvot, ja nimetä tämä muuttuja X.

Laita vastaavat arvot nimetylle muuttujalle y.

X = df[['Weight', 'Volume']]
y = df['CO2']

Vinkki:Yleensä, nimetty riippumattomien arvojen lista isolla kirjaimella Xnimetty lista vastaavista arvoista alaviivalla y.

Käytämme sklearn-moduulin joitakin menetelmiä, joten meidän on myös tuotettava tämä moduuli:

from sklearn import linear_model

sklearn-moduulissa käytämme LinearRegression() menetelmä, joka luo takaisinregressiivisen objektin.

Objektilla on nimeltään fit() menetelmä, joka ottaa riippumattomat ja riippuvat arvot parametreina, ja täyttää takaisinregressiivisen objektin kuvaavalla datalla tämän suhteen:

regr = linear_model.LinearRegression()
regr.fit(X, y)

Nyt meillä on takaisinregressiivinen objekti, jonka avulla voimme ennustaa CO2-arvoja autojen painon ja säiliötilavuuden perusteella:

# ennustetaan 2300kg painoisella ja 1300ccm säiliötilavuudella varustetun auton hiilidioksidipäästöjä:
predictedCO2 = regr.predict([[2300, 1300]])

Esimerkki

Tarkastele täydellistä esimerkkiä:

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)
# ennustetaan 2300kg painoisella ja 1300ccm säiliötilavuudella varustetun auton hiilidioksidipäästöjä:
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)

Tulos:

[107.2087328]

Suorita esimerkki

ennustamme, että 1,3 litran moottorin ja 2300 kilon painoisessa autossa vapautuu noin 107 grammaa hiilidioksidia jokaista kilometriä ajettua.

Suhdekoeficientti

Suhdekoeficientti on tekijä, joka kuvaa suhdetta tuntemattomaan muuttujaan.

Esimerkiksi: jos x On muuttuja, niin 2x On x kaksinkertaisesti.x On tuntematon muuttuja, numero 2 On suhdekoeficientti.

Tässä tapauksessa voimme pyytää painon suhteen CO2:n suhteellisia arvoja, sekä säiliötilavuuden suhteen CO2:n suhteellisia arvoja. Saamamme vastaus kertoo meille, mitä tapahtuu, jos lisäämme tai vähennämme yhtä riippumattomasta arvosta.

Esimerkki

Tulostetaan takaisinregressiivisen objektin suhteelliset arvot:

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_)

Tulos:

[0.00755095 0.00780526]

Suorita esimerkki

Tuloksen selitys

Tulostaulukko edustaa painon ja säiliötilavuuden suhteellisia arvoja.

Weight: 0.00755095
Volume: 0.00780526

Nämä arvot kertovat meille, että jos paino kasvaa 1g, niin CO2-päästöjen määrä kasvaa 0.00755095g.

Jos moottorin kokoinen (volyymi) kasvaa 1 ccm, niin CO2-päästöjen määrä kasvaa 0.00780526g.

Minusta tämä on järkevä arvaus, mutta suosittelen silti testata sitä!

Olemme ennustaneet, että 1300ccm moottorin ja 2300 kilogramman painoisessa autossa hiilidioksidipäästöt ovat noin 107 grammaa.

Mikä tapahtuu, jos lisäämme 1000g painoa?

Esimerkki

Kopioi edellinen esimerkki, mutta muuta auton paino 2300:sta 3300:ksi:

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)

Tulos:

[114.75968007]

Suorita esimerkki

Olemme ennustaneet, että 1,3 litran moottorin ja 3,3 tonnin painoisessa autossa vapautuu noin 115 grammaa hiilidioksidia jokaista 1 kilometriä ajettua.

Tämä osoittaa, että 0.00755095 -kerroin on oikea:

107.2087328 + (1000 * 0.00755095) = 114.75968