Scikit-learn on avoimen lähdekoodin Python-kirjasto, joka yksinkertaistaa koneoppimismallien rakentamista. Se tarjoaa puhtaan ja johdonmukaisen käyttöliittymän, joka auttaa sekä aloittelijoita että kokeneita käyttäjiä työskentelemään tehokkaasti.
- Tukee tehtäviä, kuten luokitteluregressioklusterointia ja esikäsittelyä
- Tekee mallin rakentamisesta nopeaa ja luotettavaa
- Tarjoaa käyttövalmiita työkaluja koulutukseen ja arviointiin
- Vähentää monimutkaisuutta välttämällä algoritmien manuaalista toteutusta
Scikit-learnin asennus ja käyttö
Ennen kuin aloitamme mallien rakentamisen, meidän on asennettava Scikit-learry. Se vaatii Python 3.8:n tai uudemman ja riippuu kahdesta tärkeästä kirjastosta: NumPy ja SciPy. Varmista, että nämä on asennettu ensin.
Asenna Scikit-learn suorittamalla seuraava komento:
pip install -U scikit-learn
Tämä lataa ja asentaa Scikit-learnin uusimman version ja sen riippuvuuksia. Katsotaan erilaisia vaiheita, jotka liittyvät mallin rakentamiseen Scikit-learn-kirjaston avulla.
Vaihe 1: Tietojoukon lataaminen
Tietojoukko koostuu:
- Ominaisuudet (X): Syötä muuttujat, jotka kuvaavat tietoja
- Kohde (y): Arvo, jonka haluamme ennustaa
Scikit-learn tarjoaa sisäänrakennettuja tietojoukkoja, kuten Iris Digits ja Boston Housing. Iris-tietojoukon käyttäminen:
- load_iris() lataa tiedot
- X tallentaa ominaisuustiedot
- y tallentaa kohdeetikettejä
- ominaisuuden_nimet ja kohteen_nimet antavat kuvaavia nimiä
Voimme tarkastaa ensimmäiset rivit ymmärtääksemme rakenteen. Mukautetuissa tietojoukoissa Pandasta käytetään yleisesti ulkoisten tiedostojen, kuten CSV-tiedostojen, lataamiseen.
Pythonfrom sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target feature_names = iris.feature_names target_names = iris.target_names print('Feature names:' feature_names) print('Target names:' target_names) print('nType of X is:' type(X)) print('nFirst 5 rows of X:n' X[:5])
Lähtö:
Ladataan tietojoukkoaJoskus meidän on työstettävä omia mukautettuja tietojamme, minkä jälkeen lataamme ulkoisen tietojoukon. Tätä varten voimme käyttää pandakirjasto tiedostojen lataamista ja käsittelyä varten.
Tätä varten voit viitata artikkeliimme aiheesta Kuinka tuoda csv-tiedosto pandassa ?
lisäyslajittelu
Vaihe 2: Tietojoukon jakaminen
Arvioidaksemme mallia oikeudenmukaisesti jaamme tiedot:
- Harjoitussarja: Käytetään mallin kouluttamiseen
- Testaussarja: Käytetään arvioimaan kuinka hyvin malli yleistyy
Train_test_split avulla jaamme Iris-tietojoukon siten, että 60% on harjoittelua ja 40% testausta varten (test_size=0.4). random_state=1 varmistaa toistettavuuden.
Jakamisen jälkeen saamme:
- X_train y_train -> Harjoitustiedot
- X_test y_test -> Testaustiedot
Muotojen tarkistaminen varmistaa, että tiedot jaetaan oikein.
Pythonfrom sklearn.model_selection import train_test_split X_train X_test y_train y_test = train_test_split(X y test_size=0.4 random_state=1)
Nyt tarkistetaan Muodot Splitted Data varmistaa, että molemmilla sarjoilla on oikeat datasuhteet välttäen mahdolliset virheet mallin arvioinnissa tai koulutuksessa.
Pythonprint('X_train Shape:' X_train.shape) print('X_test Shape:' X_test.shape) print('Y_train Shape:' y_train.shape) print('Y_test Shape:' y_test.shape)
Lähtö:
Jaetun tiedon muotoVaihe 3: Kategoristen tietojen käsittely
Koneoppimisalgoritmit toimivat numeeristen syötteiden kanssa, joten kategorinen (teksti)data on muutettava numeroiksi. Jos niitä ei koodata oikein, mallit voivat tulkita luokkia väärin. Scikit-learn tarjoaa useita koodausmenetelmiä:
1. Label-koodaus : Se muuntaa jokaisen luokan ainutlaatuiseksi kokonaisluvuksi. Esimerkiksi sarakkeessa, jossa on luokat, kuten "kissa" "koira" ja "lintu", se muuntaa ne arvoiksi 0 1 ja 2. Tämä menetelmä toimii hyvin, kun luokilla on merkityksellinen järjestys, kuten Matala Keskitaso ja Korkea.
- LabelEncoder(): Se alustetaan luomaan enkooderiobjekti, joka muuntaa kategoriset arvot numeerisiksi nimikkeiksi.
- sovi_transform(): Tämä menetelmä sovittaa ensin kooderin kategorisiin tietoihin ja muuntaa sitten luokat vastaaviksi numeerisiksi tunnisteiksi.
from sklearn.preprocessing import LabelEncoder categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] encoder = LabelEncoder() encoded_feature = encoder.fit_transform(categorical_feature) print('Encoded feature:' encoded_feature)
Lähtö:
Java-kielen haastattelukysymykset
Koodattu ominaisuus: [1 2 2 1 0]
2. One-Hot-koodaus : One-Hot Encoding luo erilliset binäärisarakkeet kullekin luokalle. Tästä on hyötyä, kun luokilla ei ole luonnollista järjestystä. Esimerkki: kissakoira lintu -> 3 uutta saraketta (kissa/koira/lintu) ykkösillä ja noloilla.
- Syöte on muotoiltava uudelleen 2D-taulukoksi
- OneHotEncoder(sparse_output=False) luo binäärisarakkeita
from sklearn.preprocessing import OneHotEncoder import numpy as np categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] categorical_feature = np.array(categorical_feature).reshape(-1 1) encoder = OneHotEncoder(sparse_output=False) encoded_feature = encoder.fit_transform(categorical_feature) print('OneHotEncoded feature:n' encoded_feature)
Lähtö:
objektin muuntaminen merkkijonoksi
Label-koodauksen ja One-Hot-koodauksen lisäksi on muitakin tekniikoita, kuten Keskimääräinen koodaus .
Vaihe 4: Mallin kouluttaminen
Nyt kun tietomme ovat valmiita, on aika kouluttaa koneoppimismalli. Scikit-learnissä on monia algoritmeja, joissa on johdonmukainen käyttöliittymä harjoituksen ennustamiseen ja arviointiin. Täällä käytämme Logistinen regressio esimerkkinä.
Huom : Emme mene yksityiskohtiin algoritmin toiminnasta, koska olemme kiinnostuneita ymmärtämään vain sen toteutusta.
- log_reg = LogisticRegression(max_iter=200): Logistisen regression luokitteluobjektin luominen.
- log_reg.fit(X_train y_train): Käyttämällä tätä logistinen regressiomalli säätää mallin parametreja niin, että ne sopivat parhaiten dataan.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train)
Koulutus käyttäen logistista regressiota.Vaihe 5: Tee ennusteita
Koulutuksen jälkeen käytämme mallia ennusteiden tekemiseen testidatasta X_test kutsumalla ennustamismenetelmää. Tämä palauttaa ennakoidut tunnisteet y_pred.
- log_reg.predict: Se käyttää koulutettua logistista regressiomallia ennustaakseen merkintöjä testidatalle X_test.
y_pred = log_reg.predict(X_test)
Vaihe 6: Mallin tarkkuuden arviointi
Tarkista mallimme suorituskyky vertaamalla arvoja y_test ja y_pred. Tässä käytämme metriikkamoduulin menetelmää accuracy_score.
Pythonfrom sklearn import metrics print('Logistic Regression model accuracy:' metrics.accuracy_score(y_test y_pred))
Lähtö:
Logistisen regressiomallin tarkkuus: 0,9666666666666667
Nyt haluamme mallimme tekevän ennusteita uusien näytetietojen perusteella. Sitten näytesyöttö voidaan yksinkertaisesti välittää samalla tavalla kuin mikä tahansa ominaisuusmatriisi. Tässä käytimme sitä näytteenä = [[3 5 4 2] [2 3 5 4]]
Pythonsample = [[3 5 4 2] [2 3 5 4]] preds = log_reg.predict(sample) pred_species = [iris.target_names[p] for p in preds] print('Predictions:' pred_species)
Lähtö:
Ennusteet: [np.str_('virginica') np.str_('virginica')]
Scikit-learnin ominaisuudet
Scikit-learnia käytetään, koska se tekee koneoppimismallien rakentamisesta yksinkertaista ja tehokasta. Tässä on joitain tärkeitä syitä:
- Käyttövalmiit työkalut : Se tarjoaa sisäänrakennettuja toimintoja yleisiin tehtäviin, kuten koulutusmallien tietojen esikäsittelyyn ja ennusteiden tekemiseen. Tämä säästää aikaa, sillä algoritmeja ei tarvitse koodata tyhjästä.
- Helppo mallin arviointi : Ristiinvalidoinnin ja suorituskykymittareiden kaltaisten työkalujen avulla se auttaa mittaamaan mallimme toimivuutta ja tunnistamaan parannuskohteita.
- Laaja algoritmituki : Se tarjoaa monia suosittuja koneoppimisalgoritmeja, mukaan lukien luokitteluregression ja klusteroinnin, mikä antaa meille joustavuutta valita oikea malli ongelmaamme.
- Sujuva integraatio : Rakennettu tärkeiden Python-kirjastojen, kuten NumPyn ja SciPyn, päälle, joten se sopii olemassa olevaan data-analyysin työnkulkuumme.
- Yksinkertainen ja johdonmukainen käyttöliittymä : Sama yksinkertainen syntaksi toimii eri malleissa, mikä helpottaa algoritmien oppimista ja vaihtamista.
- Mallin viritys on helppoa : Työkalut, kuten ruudukkohaku, auttavat meitä hienosäätämään mallimme asetuksia tarkkuuden parantamiseksi ilman ylimääräistä vaivaa.
Scikit-learnin käytön edut
- Käyttäjäystävällinen : Scikit-learnin johdonmukainen ja yksinkertainen käyttöliittymä tekee siitä aloittelijoiden ja parhaan asiantuntijoiden käytettävissä.
- Aikaa säästävä: Valmiiksi rakennetut työkalut ja algoritmit vähentävät kehitysaikaa, minkä ansiosta voimme keskittyä enemmän ongelmien ratkaisemiseen kuin yksityiskohtien koodaamiseen.
- Parempi mallin suorituskyky : Helppokäyttöiset viritys- ja arviointityökalut auttavat parantamaan mallin tarkkuutta ja luotettavuutta.
- Joustava ja skaalautuva : Tukee monenlaisia algoritmeja ja integroituu sujuvasti muihin Python-kirjastoihin, mikä auttaa tekemään siitä sopivan kaikenkokoisiin projekteihin.
- Vahva yhteisön tuki : Suuri aktiivinen yhteisö varmistaa säännöllisen päivityksen kattavan dokumentaation ja runsaasti resursseja avuksi, kun jumiudumme.