Royc30ne

Royc30ne

机器学习 | 联邦学习 | VPS | 摄影 | 日常

[NumPyのテクニック] データセットを保存し、集中管理するためにnumpyを使用する機械学習

https://images.unsplash.com/photo-1646583288948-24548aedffd8?ixlib=rb-4.0.3&q=85&fm=jpg&crop=entropy&cs=srgb
記事の最初に掲載されている若绾による投稿

概要#

機械学習では、データは非常に重要です。したがって、機械学習プロジェクトでは、データの管理と処理は不可欠です。データ管理には、データの収集、クリーニング、保存、処理など、さまざまな側面が関わります。この記事では、データセットを効率的に管理するために NumPy を使用する方法について説明します。

NumPy を使用したデータセットの保存#

NumPy は、科学計算用の Python ライブラリです。NumPy は、強力な多次元配列オブジェクトと、それらの配列を操作するための関数のセットを提供します。NumPy 配列は、数値、文字列、ブール値など、さまざまなタイプのデータを格納することができます。そのため、データセットを保存するための理想的な選択肢です。

単一の配列の保存#

データセットに単一の配列しかない場合、NumPy のsave関数を使用することができます。

numpy.save#

関数の引数:

file: file, str, or pathlib.Path

データが保存されるファイルまたはファイル名です。ファイルがファイルオブジェクトの場合、ファイル名は変更されません。ファイルが文字列またはパスの場合、ファイル名に.npy拡張子がない場合は、ファイル名に.npy拡張子が追加されます。

arr: array_like

保存する配列データです。

allow_pickle: bool, optional

オブジェクト配列を保存するために Python の pickle を使用することを許可します。pickle を許可しない理由には、セキュリティ(pickle されたデータを読み込むと任意のコードが実行される可能性がある)とポータビリティ(pickle されたオブジェクトが異なる Python インストールで読み込めない場合があるため、保存されたオブジェクトが必要なライブラリが利用できない場合があります。また、すべての pickle データが Python 2 と Python 3 の間で互換性があるわけではありません)があります。デフォルト値:True

fix_imports: bool, optional

Python 3 上のオブジェクト配列のオブジェクトを Python 2 と互換性のある方法で pickle する場合にのみ有効です。fix_imports が True の場合、pickle は新しい Python 3 の名前を Python 2 で使用される古いモジュール名にマッピングしようとします。これにより、pickle データストリームを Python 2 で読み込むことができます。

たとえば、dataという名前の NumPy 配列があるとします。次のコードを使用して、それをdata.npyという名前のファイルに保存することができます。

import numpy as np

data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
np.save('data.npy', data)

ファイルから配列をロードする#

データセットをロードするには、NumPy のload関数を使用することができます。たとえば、次のコードは、data.npyという名前のファイルに保存された配列をロードします。

import numpy as np

data = np.load('data.npy')
print(data)

出力は次のようになります。

[[1 2 3]
 [4 5 6]
 [7 8 9]]

複数の配列を同時に保存する#

データセットに複数の配列が含まれている場合(例:trani_set、train_label、test_set、test_label など)、NumPy のsavezまたはsavez_compressed関数を使用してデータセットを保存することができます。**numpy.savezは、複数の配列を非圧縮の.npzファイルとして保存し、numpy.savez_compressedは配列を圧縮された.npz** ファイルとして保存し、ストレージスペースを節約することができます。

numpy.savez#

関数の引数:

file: str or file

ファイル名(str)またはオープンされたファイル(ファイルのようなオブジェクト)で、データが保存されます。ファイルが文字列またはパスの場合、ファイル名に.npz拡張子がない場合は、ファイル名に.npz拡張子が追加されます。

args: Arguments, optional

ファイルに保存する配列。配列に名前を付けるためにキーワード引数を使用してください(後述の kwds を参照)。args で指定された配列は、"arr_0"、"arr_1" などの名前で保存されます。

kwds: Keyword arguments, optional

ファイルに保存する配列。各配列は、それに対応するキーワード名で出力ファイルに保存されます。

kwds を使用すると、配列はキーワード名で保存されます。この例では、2 つの NumPy 配列array1array2を作成し、それらをnumpy.savezを使用してarrays.npz** という名前のファイルに保存します。注意点として、各配列に名前を指定する必要があることです。

import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

# 配列をファイルに保存
np.savez('arrays.npz', arr1=array1, arr2=array2)

numpy.savez_compressed#

関数の引数:

file: str or file

ファイル名(str)またはオープンされたファイル(ファイルのようなオブジェクト)で、データが保存されます。ファイルが文字列またはパスの場合、ファイル名に.npz拡張子がない場合は、ファイル名に.npz拡張子が追加されます。

args: Arguments, optional

ファイルに保存する配列。配列に名前を付けるためにキーワード引数を使用してください(後述の kwds を参照)。args で指定された配列は、"arr_0"、"arr_1" などの名前で保存されます。

kwds: Keyword arguments, optional

ファイルに保存する配列。各配列は、それに対応するキーワード名で出力ファイルに保存されます。

この例は前の例と似ていますが、**numpy.savez_compressedを使用して配列を圧縮された.npz** ファイルとして保存しています。

import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

# 配列を圧縮されたファイルに保存
np.savez_compressed('compressed_arrays.npz', arr1=array1, arr2=array2)

ファイルから配列をロードする#

**.npzファイルから配列をロードするには、numpy.load** 関数を使用します:

import numpy as np

# 保存された配列をロード
loaded_arrays = np.load('arrays.npz')

# ファイルで指定した名前で配列にアクセス
loaded_array1 = loaded_arrays['arr1']
loaded_array2 = loaded_arrays['arr2']

この例では、**numpy.loadを使用してarrays.npzという名前のファイルをロードし、指定した名前で配列にアクセスしています。同様の方法は、圧縮された.npz** ファイルをロードする場合にも適用されます。

まとめ#

本記事では、データセットを効率的に管理するために NumPy を使用する方法について説明しました。これはデータ管理の重要な側面であり、どの機械学習プロジェクトでも十分に注意を払う必要があります。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。