Twiittaa Jaa Jaa

Viimeisin päivitetty 19.8.2020

Koneoppimismallien kehittäminen Pythonilla edellyttää usein NumPy-massojen käyttöä.

NumPy-matriisit ovat tehokkaita tietorakenteita datan käsittelyyn Pythonissa, ja koneoppimismallit, kuten scikit-learn-kirjastossa olevat mallit, ja syväoppimismallit, kuten Keras-kirjastossa olevat mallit, odottavat syöttötietoja NumPy-matriisien muodossa ja tekevät ennusteita NumPy-matriisien muodossa.

Siten on yleistä, että NumPy-matriisit on tallennettava tiedostoon.

Voit esimerkiksi valmistella dataa muunnoksilla, kuten skaalauksella, ja sinun on tallennettava se tiedostoon myöhempää käyttöä varten. Voit myös käyttää mallia ennusteiden tekemiseen ja sinun on tallennettava ennusteet tiedostoon myöhempää käyttöä varten.

Tässä opetusohjelmassa opit, miten voit tallentaa NumPy-matriisisi tiedostoon.

Tämän opetusohjelman suorittamisen jälkeen tiedät:

  • Miten NumPy-matriisit tallennetaan CSV-muotoisiin tiedostoihin.
  • Miten NumPy-matriisit tallennetaan NPY-muotoisiin tiedostoihin.
  • Miten NumPy-matriisit tallennetaan pakattuihin NPZ-muotoisiin tiedostoihin.

Käynnistä projektisi uudella kirjallani Machine Learning Mastery With Python, joka sisältää vaiheittaiset opetusohjelmat ja kaikkien esimerkkien Python-lähdekooditiedostot.

Aloitetaan.

How to Save a NumPy Array to File for Machine Learning

How to Save a NumPy Array to File for Machine Learning
Photo by Chris Combe, some rights reserved.

Ohjeen yleiskatsaus

Tämä opetusohjelma on jaettu kolmeen osaan; ne ovat:

  1. Save NumPy Array to .CSV-tiedostoon (ASCII)
  2. Tallenna NumPy Array .NPY-tiedostoon (binäärinen)
  3. Tallenna NumPy Array .NPZ-tiedostoon (pakattu)

Tallenna NumPy Array .CSV-tiedosto (ASCII)

Yleisin tiedostomuoto numeeristen tietojen tallentamiseen tiedostoihin on pilkulla erotettujen muuttujien tiedostomuoto, lyhyesti CSV.

On todennäköistä, että harjoitusdatasi ja malleidesi syöttötiedot on tallennettu CSV-tiedostoihin.

Voi olla kätevää tallentaa dataa CSV-tiedostoihin, kuten mallin ennusteet.

Voit tallentaa NumPy-matriisisi CSV-tiedostoihin käyttämällä funktiota savetxt(). Tämä funktio ottaa argumentteina tiedostonimen ja matriisin ja tallentaa matriisin CSV-muotoon.

Sinun on myös määritettävä delimiter; tämä on merkki, jota käytetään erottamaan jokainen muuttuja tiedostossa, tavallisimmin pilkku. Tämä voidaan asettaa ”delimiter”-argumentilla.

1.1 Esimerkki NumPy-joukon tallentamisesta CSV-tiedostoon

Oheinen esimerkki havainnollistaa yksittäisen NumPy-joukon tallentamista CSV-muotoon.

1
2
3
4
5
6
7

# save numpy array as csv file
from numpy import asarray
from numpy import savetxt
# define data
data = asarray(])
# save to csv file
savetxt(’data.csv’, data, delimiter=’,’)

Esimerkin suorittaminen määrittelee NumPy-matriisin ja tallentaa sen tiedostoon ’data.csv’.

Matriisissa on yksi rivi dataa ja 10 saraketta. Odotamme, että nämä tiedot tallennetaan CSV-tiedostoon yhtenä tietorivinä.

Esimerkin suorittamisen jälkeen voimme tarkastaa ’data.csv’:n sisällön.

Meidän pitäisi nähdä seuraavaa:

1
0.000000000000000000e+00,1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00,4.000000000000000000e+00,5.000000000000000000e+00,6.000000000000000000e+00,7.000000000000000000000000000000e+00,8.000000000000000000000000000000e+00,9.000000000000000000000000000000e+00

Voidaan nähdä, että tiedot on tallennettu oikein yhdeksi riviksi ja että matriisin liukuluvut on tallennettu täydellä tarkkuudella.

1.2 Esimerkki NumPy-matriisin lataamisesta CSV-tiedostosta

Voidaan ladata tämä data myöhemmin NumPy-matriisina loadtext()-funktiolla ja määritellä tiedostonimi ja sama pilkku-erotin.

Kokonaisuudessaan esimerkki on lueteltu alla.

1
2
3
4
5
6

# load numpy array from csv file
from numpy import loadtxt
# load array
data = loadtxt(’data.csv’, delimiter=’,’)
# tulosta array
print(data)

Esimerkin suorittaminen lataa datan CSV-tiedostosta ja tulostaa sisällön, joka vastaa edellisessä esimerkissä määriteltyä yksittäistä riviämme, jossa on 10 saraketta.

1

Tallenna NumPy-matriisi .NPY File (binary)

Joskus meillä on NumPy-matriiseissa paljon dataa, jonka haluamme tallentaa tehokkaasti, mutta jota tarvitsemme vain toisessa Python-ohjelmassa.

Tällöin voimme tallentaa NumPy-matriisit natiiviin binääriformaattiin, joka on tehokas sekä tallentaessa että ladattaessa.

Tämä on tavallista, kun kyseessä on valmisteltu syöttötieto, kuten muunnettu data, jota on tulevaisuudessa käytettävä erilaisten koneoppimismallien testaamiseen tai monien kokeilujen suorittamiseen.

Tässä .npy-tiedostomuoto soveltuu tähän käyttötarkoitukseen, ja siihen viitataan yksinkertaisesti nimellä ”NumPy-muoto”.

Tämä onnistuu käyttämällä save()- NumPy-funktiota ja määrittelemällä tiedostonimi ja tallennettava matriisi.

2.1 Esimerkki NumPy-massamäärän tallentamisesta NPY-tiedostoon

Alhaalla esitettävässä esimerkissä määritellään kaksiulotteinen NumPy-massamassamäärämme ja tallennetaan se .npy-tiedostoon.

1
2
3
4
5
6
7

# save numpy array as npy file
from numpy import asarray
from numpy import save
# define data
data = asarray(])
# save to npy file
save(’data.npy’, data)

Kun olet ajanut esimerkin, näet hakemistossa uuden tiedoston nimellä ’data.npy’.

Et voi tarkastaa tämän tiedoston sisältöä suoraan tekstieditorilla, koska se on binäärimuodossa.

2.2 Esimerkki NumPy-määritteen lataamisesta NPY-tiedostosta

Voit ladata tämän tiedoston NumPy-määritteeksi myöhemmin load()-funktiolla.

Täydellinen esimerkki on lueteltu alla.

1
2
3
4
5
6

# load numpy array from npy file
from numpy import load
# load array
data = load(’data.npy’)
# tulosta array
print(data)

Esimerkin suorittaminen lataa tiedoston ja tulostaa sen sisällön, mikä vahvistaa, että sekä tiedosto ladattiin oikein että sen sisältö vastaa sitä, mitä odotamme samassa kaksiulotteisessa muodossa.

1
]

Tallenna NumPy-matriisi .NPZ-tiedosto (pakattu)

Joskus valmistelemme mallinnusta varten dataa, jota on käytettävä uudelleen useissa kokeissa, mutta data on suuri.

Tämä voi olla esikäsiteltyjä NumPy-matriiseja, kuten tekstikorpus (kokonaislukuja) tai kokoelma uudelleen skaalattua kuvadataa (pikseleitä). Näissä tapauksissa on toivottavaa sekä tallentaa data tiedostoon että myös pakatussa muodossa.

Tällöin gigatavun kokoinen data voidaan pienentää satoihin megatavuihin, ja se voidaan helposti siirtää muille palvelimille pilvipalvelimille pitkiä algoritmiajonteja varten.

Tässä tapauksessa .npz-tiedostomuoto sopii hyvin, ja se tukee pakattua versiota natiivista NumPy-tiedostomuodosta.

Savez_compressed() NumPy-funktio mahdollistaa useiden NumPy-määritteiden tallentamisen yhteen pakattuun .npz-tiedostoon.

3.1 Esimerkki NumPy-määritteen tallentamisesta NPZ-tiedostoon

Voimme käyttää tätä funktiota tallentaaksemme yksittäisen NumPy-määritteemme pakattuun tiedostoon.

Kokonaisuudessaan esimerkki on lueteltu alla.

1
2
3
4
5
6
7

# save numpy array as npz file
from numpy import asarray
from numpy import savez_compressed
# define data
data = asarray(])
# save to npy file
savez_compressed(’data.npz’, data)

Esimerkin suorittaminen määrittelee joukon ja tallentaa sen pakattuun numpy-muotoiseen tiedostoon nimellä ’data.npz’.

Kuten .npy-muodossa, emme voi tarkastaa tallennetun tiedoston sisältöä tekstieditorilla, koska tiedostomuoto on binäärinen.

3.2 Esimerkki NumPy-määritteen lataamisesta NPZ-tiedostosta

Voidaan ladata tämä tiedosto myöhemmin käyttämällä samaa load()-funktiota kuin edellisessä kappaleessa.

Tässä tapauksessa savez_compressed()-funktio tukee useiden määrien tallentamista yhteen tiedostoon. Siksi load()-funktio voi ladata useita matriiseja.

Ladatut matriisit palautetaan load()-funktiosta dict-tiedostona, jonka nimet ovat ’arr_0’ ensimmäiselle matriisille, ’arr_1’ toiselle ja niin edelleen.

Kokonaisesimerkki yhden matriisin lataamisesta on lueteltu alla.

1
2
3
4
5
6
7
8

# load numpy array from npz file
from numpy import load
# load dict of arrays
dict_data = load(’data.npz’)
# poimi ensimmäinen array
data = dict_data
# tulosta array
print(data)

Esimerkin ajaminen lataa pakatun numpy-tiedoston, joka sisältää sanakirjan arrayista, sen jälkeen poimii ensimmäisen tallentamamme matriisin (tallensimme vain yhden) ja tulostaa sitten sen sisällön vahvistaen, että matriisin arvot ja muoto vastaavat sitä, mitä alun perin tallensimme.

1
]

Lisälukemista

Tässä osiossa on lisää resursseja aiheesta, jos haluat syventyä.

Postit

  • How To Load Machine Learning Data in Python
  • A Gentle Introduction to NumPy Arrays in Python
  • How to Index, Slice and Reshape NumPy Arrays for Machine Learning

API:t

  • numpy.savetxt API
  • numpy.save API
  • numpy.savez API
  • numpy.savez_compressed API
  • numpy.load API
  • numpy.loadtxt API

Yhteenveto

Tässä opetusohjelmassa sait selville, miten voit tallentaa NumPy-matriisisi tiedostoon.

Kohtaisesti opit:

  • Miten NumPy-matriisit tallennetaan CSV-muotoisiin tiedostoihin.
  • Miten NumPy-matriisit tallennetaan NPY-muotoisiin tiedostoihin.
  • How to save NumPy arrays to compressed NPZ formatted files.

Onko sinulla kysyttävää?
Kysy kysymyksesi alla olevissa kommenteissa ja yritän parhaani mukaan vastata.

Tutustu nopeaan koneoppimiseen Pythonilla!

Master Machine Learning With Python

Kehitä omat mallisi minuuteissa

…vain muutamalla rivillä scikit-learn-koodia

Opi miten uudessa E-kirjassani:
Koneoppimisen mestaruus Pythonilla

Kattaa itseopiskeluoppaita ja kokonaisvaltaisia projekteja, kuten:
Datan lataaminen, visualisointi, mallintaminen, virittäminen ja paljon muuta…

Vihdo koneoppiminen vihdoinkin
omiin projekteihisi

Laske akateemisuus. Just Results.

See What’s Inside

Tweet Share Share Share

Vastaa

Sähköpostiosoitettasi ei julkaista.