Teollisuus koneoppiminen - monivaiheinen regressio
- Edellinen sivu Monimutkainen polynomiregressio
- Seuraava sivu Skaalaus
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 X
nimetty 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]
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]
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]
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
- Edellinen sivu Monimutkainen polynomiregressio
- Seuraava sivu Skaalaus