Ensimmäisen koneoppimisluokittelun rakentaminen Pythonissa



Tämä artikkeli auttaa sinua rakentamaan koneoppimisen luokittelijan Pythoniin Scratchista. Se antaa sinulle myös yksityiskohtaisen tiedon luokituksesta.

on muotisana juuri nyt. Koneoppimisen avulla tehdään upeita juttuja. Olemasta meidän henkilökohtainen avustaja , päättää meidän matkareitit , auttaa meitä ostoksilla, auttaa meitä hoitamaan yritystämme, huolehtimaan meistä terveys ja hyvinvointi, koneoppiminen on integroitu jokapäiväiseen elämäämme niin perustason tasolla, että useimmiten emme edes tajua, että luotamme siihen. Tässä artikkelissa noudatamme aloittelijan lähestymistapaa vakio koneoppimisluokittelijan käyttöönotossa Pythonissa.

Koneoppimisen yleiskatsaus

Koneoppiminen on käsite, jonka avulla kone voi oppia esimerkkeistä ja kokemuksista, ja myös ilman, että sitä olisi erikseen ohjelmoitu. Joten koodin kirjoittamisen sijaan syötät dataa yleiseen algoritmiin, ja algoritmi / kone rakentaa logiikan annettujen tietojen perusteella.





Koneoppimisen luokittelija

Koneoppimiseen sisältyy koneiden kyky tehdä päätöksiä, arvioida toimintansa tuloksia ja parantaa käyttäytymistään parempien tulosten saamiseksi peräkkäin.



Oppimisprosessi tapahtuu kolmella päätavalla

  • Ohjattu oppiminen
  • Valvomaton oppiminen
  • Vahvistusoppiminen

Malli koneoppimisen luokittelijoille

Koneoppimisen työkalut ovat melko kätevästi Python-kirjastossa nimeltä scikit-learn, joita on helppo käyttää ja käyttää.



Asenna scikit-learn komentokehotteen kautta:

pip install -U scikit-learn

Jos olet anaconda-käyttäjä, voit käyttää anaconda-kehotteessa:

conda asenna scikit-learn

Asennus vaatii NumPy- ja SciPy-pakettien etukäteen asentamisen järjestelmään.

Esikäsittely: Ensimmäinen ja tärkein vaihe koneoppimiseen perustuvassa data-analyysissä on esikäsittelyosa. Tietojen oikea esitys ja puhdistus on ehdottoman välttämätöntä, jotta ML-malli voisi treenata hyvin ja toimia sen mahdollisuuksien mukaan.

Vaihe 1 - Tuo tarvittavat kirjastot

tuonti numero niin kuin np tuonti pandat kuin pd tuonti matplotlib.pyplot as plt

Vaihe 2 - Tuo tietojoukko

tietojoukko = pd.read_csv ()

Jaetaan sitten datajoukko itsenäisiksi ja riippuvaisiksi muuttujiksi. Riippumattomien muuttujien on oltava lähtötietoja ja riippuvainen muuttujat ovat lähtötiedot.

X = dataset.iloc []. Arvot y = dataset.iloc []. Arvot

Vaihe 3 - Käsittele puuttuvat tiedot

kuinka asentaa atomia pythonille

Aineisto voi sisältää tyhjiä tai nolla-arvoja, mikä voi aiheuttaa virheitä tuloksissamme. Siksi meidän on käsiteltävä tällaisia ​​merkintöjä. Yleinen käytäntö on korvata nolla-arvot yhteisellä arvolla, kuten kyseisen sarakkeen keskiarvolla tai yleisimmällä arvolla.

from sklearn.preprocinging import imputer imputer = imputer (puuttuvat_arvot = 'NaN', strategia = 'keskiarvo', akseli = 0) imputer = imputer.fit (X []) X [] = imputer.transform (X [])

Vaihe 4 - Muunna kategoriset muuttujat numeerisiksi muuttujiksi

from sklearn.preprocessing import LabelEncoder le_X = LabelEncoder () X [] = le_X.fit_transform (X []) labelencoder_y = LabelEncoder () y = labelencoder_y.fit_transform (y)

Nyt koodauksen jälkeen voi tapahtua, että kone olettaa numeerisen datan luokiteltuina koodatuille sarakkeille. Siten, jotta saisimme saman painon, meidän on muunnettava numerot yksi-kuumiksi vektoreiksi käyttämällä OneHotEncoder-luokkaa.

from sklearn.preprocessing import OneHotEncoder oneHE = OneHotEncoder (kategoriset_ominaisuudet = []) X = oneHE.fit_transform (X) .toarray ()

Vaihe 5 - Suorita skaalaus

Tämä vaihe on käsiteltävä ristiriitaisuuksia, jotka johtuvat muuttujien epäsuhtaisista asteikoista. Siksi skaalamme ne kaikki samalle alueelle niin, että ne saavat saman painon samalla, kun heidät syötetään malliin. Käytämme tähän tarkoitukseen StandardScaler-luokan kohdetta.

from sklearn.preprocinging import StandardScaler sc_X = StandardScaler () X = sc_X.fit_transform (X)

Vaihe 6 - Jaa tietojoukko koulutus- ja testaustietoihin

Esikäsittelyn viimeisenä vaiheena tietojoukko on jaettava koulutusjoukkoon ja testisarjaan. Juna-testijakauman vakiosuhde on 75% -25%. Voimme muokata vaatimusten mukaisesti. Train_test_split () -toiminto voi tehdä tämän meille.

mistä sklearn.model_selection tuo juna_testi_split X_train, X_test, y_train, y_test = juna_test_split (X, y, test_size = 0,25)

Mallirakennus: Tämä vaihe on itse asiassa melko yksinkertainen. Kun olemme päättäneet, mitä mallia sovelletaan tietoihin, voimme luoda objektin sen vastaavalle luokalle ja sovittaa objektin harjoitusjoukkoomme pitämällä X_train syötteenä ja y_train lähtöä.

alkaen sklearn. tuo luokittelija = () luokittelija.fit (X_train, y_train)

Malli on nyt koulutettu ja valmis. Voimme nyt soveltaa malliamme testijoukkoon ja löytää ennustetun tuotoksen.

y_pred = luokittelija.ennuste (X_test)

Tulosten tarkasteleminen: Luokittelijan suorituskykyä voidaan arvioida tarkkuuden, tarkkuuden, palauttamisen ja f1-pistemäärän perusteella. Nämä arvot voidaan nähdä käyttämällä menetelmää, joka tunnetaan nimellä luokitusraportti (). T voidaan myös nähdä sekaannusmatriisina, joka auttaa meitä tietämään, kuinka monta tietoluokkaa on luokiteltu oikein.

sklearn.metrics-tiedostosta tuoda sekaannusmatriisi cm = sekaannusmatriisi (y_testi, y_pred) tulosta (cm) sklearn.metricsistä tuontiluokituksen_raportti kohdenimet = [] tulosta (luokitusraportti (y_testi, y_pred, kohde_nimet = kohde_nimet))

Koneoppimisen luokittelijan ongelma

Käytämme erittäin suosittua ja yksinkertaista Iris-aineistoa, joka sisältää kukkien mitat 3 kategoriassa - Iris-setosa, Iris-versicolor ja Iris-virginica. Tietojoukossa on 150 merkintää.

# Kirjastojen tuominen tuo numerot tuoda np-tuontina matplotlib.pyplot plt-tuontipandina pd-tiedostona # Tuodaan tietojoukko dataset = pd.read_csv ('iris.csv')

Katsotaanpa aineistoa nyt.

dataset.head ()

Meillä on 4 riippumatonta muuttujaa (lukuun ottamatta Id: tä), nimittäin sarakkeiden numerot 1-4, ja sarake 5 on riippuvainen muuttuja. Joten voimme erottaa ne.

X = dataset.iloc [:, 1: 5] .arvot y = dataset.iloc [:, 5] .arvot

Nyt voimme jakaa tietojoukon koulutukseen ja testaukseen.

Java-ohjelman perusrakenne
# Tietojoukon jakaminen harjoitusjoukkoon ja testisarjaan sklearn.model_selection-tuonti juna_testi_osio X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,25)

Nyt sovellamme logistista regressiota luokittelua aineistoon.

# Mallin rakentaminen ja kouluttaminen sklearn.linear_model-tuonnista LogisticRegression luokittelija = LogisticRegression () luokittelija.fit (X_train, y_train) # Testisarjan tulosten ennustaminen y_pred = luokittelija.predict (X_test)

Viimeinen vaihe on analysoida koulutetun mallin suorituskykyä.

# Sekaannusmatriisin tekeminen sklearn.metricsistä tuo sekaannusmatriisi cm = sekaannusmatriisi (y_testi, y_pred) tulosta (cm)

Tämä osoittaa, että malli ennusti oikein ensimmäisen luokan 13 merkintää, toisen 11 ja kolmannen luokan 9 merkintää.

# Tarkkuuden, tarkkuuden, palauttamisen ja f1-pistemäärän tuottaminen sklearn.metrics-tuontiluokituksen_raportti kohdenimet = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'] tulosta (luokitusraportti (y_test, y_pred, kohde_nimet = kohde_nimet) )

Raportti näyttää testisarjan mallin tarkkuuden, palautuksen, f1-pistemäärän ja tarkkuuden arvot, joka koostuu 38 merkinnästä (25% aineistosta).

Onnittelut, olet onnistuneesti luonut ja ottanut käyttöön ensimmäisen koneoppimisen luokittelijan Pythonissa! Saadaksesi syvällistä tietoa yhdessä sen eri sovellusten kanssa voit ilmoittautua live-Python-verkkokoulutukseen 24/7-tuella ja käyttöikällä.