Tekoäly - skaalaus

Ominaisuuskasvatus (Scale Features)

Kun tiedot ovat erilaisia arvoiltaan, jopa eri mittayksiköissä, ne saattavat olla vaikeita vertailla. Kuinka monta kiloa on metriä vastaan? Tai kuinka korkeus verrattuna aikaan?

Tämän ongelman vastaus on skaalaus. Voimme skaalata tiedot uusiin, helposti vertailtaviin arvoihin.

Katso alla oleva taulukko, se on sama kuinMonivaiheinen takaiskuTässä luvussa käytetään samaa tietokokonaisuutta, mutta tällä kertaa, Volume-sarakkeen yksiköt ovat litroja eikä ccm (1.0 eikä 1000).

Auto Malli Volume Paino CO2
Toyota Aygo Fiesta 790 1415
Mitsubishi Space Star 1.2 1160 95
1365 Citigo Fiesta 929 95
Fiat 500 0.9 865 90
Mini Cooper CLA 1140 1328
VW Up! Fiesta 929 1328
1365 Fabia 1.4 1109 90
109 A-Luokka CLA C-Class 92
117 101 CLA 1.0 92
1490 98 Zafira A1 1415
1150 Hyundai I20 1.1 1415
980 Suzuki Swift 1.3 990
117 101 Fiesta 1.0 1415
1112 Honda Zafira Civic 1584
1252 Hundai Zafira I30 1330
108 1326 Zafira Astra 1330
104 97 Zafira C-Class 1415
1 Mazda 3 2.2 1235
1365 1280 Zafira Rapid 1235
117 1119 XC70 Focus 1328
117 105 Zafira Mondeo 1584
108 94 XC70 Insignia 1415
109 1428 E-Class C-Class 1415
1365 Skoda Zafira S60 1415
115 Octavia XC70 S60 1415
109 99 CLA 1.5 1465
1490 102 XC70 A4 1235
1490 Audi XC70 A6 1705
115 1725 V70 1.7 1405
104 1523 XC70 5 1705
109 114 E-Class 2.1 1605
115 Volvo XC70 2.0 1746
117 Ford Zafira B-Max 1235
104 BMW Zafira 2 1390
108 Opel Zafira 1.6 1405
109 Mercedes SLK 2.5 1395

120

On vaikeaa verrata kapasiteettia 1.0 ja ajonopeutta 790, mutta jos ne skaalataan verrattaviksi arvoiksi, voimme helposti nähdä, kuinka paljon yksi arvo on toista verrattuna.

Standardointimenetelmä käyttää seuraavaa kaavaa:

z = (x - u) / s

missä z on uusi arvo, x on alkuperäinen arvo, u on keskiarvo ja s on poikkeama.

Jos haet tietoja edellä mainitusta tietojoukosta weight sarakkeen ensimmäinen arvo on 790, skaalautuneet arvot ovat:

(790 - 1292.23) / 238.74 = -2.1

Jos haet tietoja edellä mainitusta tietojoukosta volume sarakkeen ensimmäinen arvo on 1.0, skaalautuneet arvot ovat:

(1.0 - 1.61) / 0.38 = -1.59

Nyt voit verrata -2.1 ja -1.59, ei 790 ja 1.0.

Sinun ei tarvitse suorittaa tätä manuaalisesti, Pythonin sklearn-moduuli sisältää nimeltään StandardScaler() tapa, joka palauttaa Scaler-objektin, jossa on konversiokirjasto.

Esimerkki

Skaalaa kaikki Weight- ja Volume-sarakkeiden arvot:

import pandas
from sklearn import linear_model
from sklearn.preprocessing import StandardScaler
scale = StandardScaler()
df = pandas.read_csv("cars2.csv")
X = df[['Weight', 'Volume']]
scaledX = scale.fit_transform(X)
print(scaledX)

Tulokset:

Huomaa, että ensimmäiset kaksi arvoa ovat -2.1 ja -1.59, ja ne vastaavat laskelmiamme:

[[-2.10389253 -1.59336644]]
 [-0.55407235 -1.07190106]
 [-1.52166278 -1.59336644]
 [-1.78973979 -1.85409913]
 [-0.63784641 -0.28970299]
 [-1.52166278 -1.59336644]
 [-0.76769621 -0.55043568]
 [ 0.3046118  -0.28970299]
 [-0.7551301  -0.28970299]
 [-0.59595938 -0.0289703 ]
 [-1.30803892 -1.33263375]
 [-1.26615189 -0.81116837]
 [-0.7551301  -1.59336644]
 [-0.16871166 -0.0289703 ]
 [ 0.14125238 -0.0289703 ]
 [ 0.15800719 -0.0289703 ]
 [ 0.3046118  -0.0289703 ]
 [-0.05142797  1.53542584]
 [-0.72580918 -0.0289703 ]
 [ 0.14962979  1.01396046]
 [ 1.2219378  -0.0289703 ]
 [ 0.5685001   1.01396046]
 [ 0.3046118   1.27469315]
 [ 0.51404696 -0.0289703 ]
 [ 0.51404696  1.01396046]
 [ 0.72348212 -0.28970299]
 [ 0.8281997   1.01396046]
 [ 1.81254495  1.01396046]
 [ 0.96642691 -0.0289703 ]
 [ 1.72877089  1.01396046]
 [ 1.30990057  1.27469315]
 [ 1.90050772  1.01396046]
 [-0.23991961 -0.0289703 ]
 [ 0.40932938 -0.0289703 ]
 [ 0.47215993 -0.0289703 ]
 [ 0.4302729   2.31762392]

Suorita esimerkki

Ennusta CO2-arvoa

Monivaiheinen takaiskuYksi tehtävä on ennustaa auton hiilidioksidipäästöjä tietäen vain auton paino ja kokoonpano.

Tietojen skaalaamisen jälkeen on käytettävä skaalausprosentteja ennustettaessa arvoja:

Esimerkki

Ennustaa 2300 kilon ja 1.3 litran auton hiilidioksidipäästöjä:

import pandas
from sklearn import linear_model
from sklearn.preprocessing import StandardScaler
scale = StandardScaler()
df = pandas.read_csv("cars2.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
scaledX = scale.fit_transform(X)
regr = linear_model.LinearRegression()
regr.fit(scaledX, y)
scaled = scale.transform([[2300, 1.3]])
predictedCO2 = regr.predict([scaled[0]])
print(predictedCO2)

Tulokset:

[107.2087328]

Suorita esimerkki