Piirteiden skaalaus: normalisointi ja standardointi
MinMaxScaler, StandardScaler ja RobustScaler – milloin kutakin käytetään ja miksi sillä on merkitystä.
Piirteiden skaalaus: normalisointi ja standardointi on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
Miksi piirteet skaalataan?
Monet algoritmit ovat herkkiä piirteen SUURUUSLUOKALLE. Piirre, jonka vaihteluväli on 0–1 000 000, hallitsee piirrettä, jonka vaihteluväli on 0–1, etäisyyteen tai gradienttiin perustuvissa malleissa. Skaalaus asettaa piirteet vertailukelpoisille vaihteluväleille.
Mitkä menetelmät tarvitsevat skaalausta?
Skaalauksella on merkitystä KNN:lle, SVM:lle, k-meansille, PCA:lle sekä gradienttilaskentaa käyttäville malleille, kuten lineaariselle ja logistiselle regressiolle ja neuroverkoille. Puupohjaiset mallit (satunnaismetsät, gradient boosting) eivät riipu skaalasta eivätkä tarvitse sitä.
Normalisointi: MinMaxScaler
Min-max-normalisointi skaalaa jokaisen piirteen kiinteälle vaihteluvälille, yleensä välille 0–1, kaavalla (x - min) / (max - min). Se säilyttää jakauman muodon.
from sklearn.preprocessing import MinMaxScaler
import numpy as np
X = np.array([[10.0], [20.0], [30.0], [40.0]])
scaler = MinMaxScaler()
print(scaler.fit_transform(X).ravel()) # [0. 0.333 0.667 1.]Standardointi: StandardScaler
Standardointi antaa jokaiselle piirteelle nollakeskiarvon ja yksikön suuruisen varianssin kaavalla (x - mean) / std. Tuloksena on z-arvo; arvot keskitetään, mutta niiden ylä- tai alarajaa ei rajoiteta.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
Xs = scaler.fit_transform(X)
print(Xs.ravel())
print(Xs.mean(), Xs.std()) # ~0 and ~1MinMax vai Standard
Käyttäkää MinMax-skaalausta, kun tarvitsette rajatun vaihteluvälin (esimerkiksi kuvapikseleille tai neuroverkon syötteille). Käyttäkää Standard-skaalausta, kun algoritmi olettaa datan olevan likimain nollakeskistä (PCA, SVM, lineaariset mallit). MinMax on herkempi poikkeamille.
RobustScaler poikkeamille
RobustScaler keskittää datan MEDIAANIN perusteella ja skaalaa sen IQR:n avulla. Koska molemmat kestävät poikkeamia, se on oikea valinta, kun ääriarvot vääristäisivät muiden skaalainten tuloksia.
from sklearn.preprocessing import RobustScaler
Xo = np.array([[1.0], [2.0], [3.0], [4.0], [100.0]])
print(RobustScaler().fit_transform(Xo).ravel())fit vs transform
Skaalaimet OPPIVAT parametrit komennolla fit (minimin ja maksimin tai keskiarvon ja keskihajonnan) ja SOVELTAVAT niitä komennolla transform. fit_transform tekee molemmat yhdellä kutsulla.
scaler = StandardScaler()
scaler.fit(X) # learns mean and std
Xs = scaler.transform(X) # applies themKultainen sääntö: sovittakaa vain harjoitusdataan
Käyttäkää aina fit-komentoa HARJOITUSDATALLE ja sen jälkeen vain transform-komentoa testidatalle opituilla parametreilla. Testidataan sovittaminen vuotaa siitä tietoa malliin.
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test) # transform only!Miksi testidataan ei pidä sovittaa?
Jos skaalatte käyttämällä tilastotietoja, jotka sisältävät testidatan, arviointi saa tietoa, jota sillä ei pitäisi olla. Kyseessä on tietovuoto. Se tuottaa liian optimistisia ja epäluotettavia suorituskykyarvioita.
Käänteinen muunnos
Skaalaimet voivat kääntää muunnoksen komennolla inverse_transform, mikä on hyödyllistä, kun skaalatut ennusteet muunnetaan takaisin alkuperäisiin yksiköihin raportointia varten.
original = scaler.inverse_transform(X_train_scaled)
# recovers the pre-scaled valuesKohteen skaalaaminen
Luokituksessa skaalaatte yleensä PIIRTEET, etteivät kohdetta. Regressiossa voitte skaalata myös kohteen, mutta muistakaa silloin tehdä ennusteille käänteinen muunnos ennen virheiden raportointia.
Pikatesti
Testatkaa skaalausta koskevat tietonne.
Kertaus
Skaalauksen työkalut:
- Skaalaus on tärkeää etäisyys- ja gradienttimalleille; puumallit eivät välitä siitä
MinMaxScaler-> rajattu välille 0..1;StandardScaler-> nollakeskiarvo ja yksikön suuruinen varianssiRobustScalerkäyttää mediaania ja IQR:ää ja kestää poikkeamia- Käyttäkää aina
fit_transform-komentoa harjoitusdatalla jatransform-komentoa vain testidatalla (tietovuodon välttämiseksi)
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 53
- Oppitunnit
- 225
Usein kysytyt kysymykset
Onko oppitunti ”Piirteiden skaalaus: normalisointi ja standardointi” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Piirteiden skaalaus: normalisointi ja standardointi”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Piirteiden skaalaus: normalisointi ja standardointi”?
MinMaxScaler, StandardScaler ja RobustScaler – milloin kutakin käytetään ja miksi sillä on merkitystä. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Piirteiden skaalaus: normalisointi ja standardointi”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?
Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Poikkeamien tunnistus ja poistaminen
- Kategoristen muuttujien koodaus
- Piirteiden skaalaus: normalisointi ja standardointi
- Esikäsittelyputkien rakentaminen