ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

データ ストア入門

データ ストアとは

データ ストアは、単一のファイルまたはファイルやデータの集合を読み取るオブジェクトです。データ ストアは、同一の構造と形式をもつデータのリポジトリとして機能します。たとえば、データ ストア内の各ファイルは同じ順序で現れる同じ型 (数値またはテキストなど) のデータを含み、同じ区切り記号で区切られていなければなりません。

データ ストアは次の場合に役に立ちます。

  • 集合に含まれる各ファイルが大きすぎてメモリに収まらない場合。データ ストアにより、各ファイルのデータをメモリに収まる小さいサイズで読み取り、解析できます。

  • 集合に含まれるファイルに任意の名前が付いている場合。データ ストアは、1 つ以上のフォルダーに含まれるファイルのリポジトリとして機能します。ファイルの名前が通し番号を含む必要はありません。

次の表に示すデータ型に対してデータ ストアを作成できます。各データ型はそれぞれ異なる種類のデータ ストアでサポートされます。各種類のデータ ストアには、それらのデータ ストアがサポートするデータ型に関連するプロパティが含まれています。

ファイルの種類またはデータ型データ ストアの種類
CSV ファイルなどの列方向優先データを含むテキスト ファイル。TabularTextDatastore
JPEG や PNG など、imread によってサポートされる形式を含む、イメージ ファイル。ImageDatastore
.xlsx などのサポートされている Excel® 形式をもつスプレッドシート ファイル。SpreadsheetDatastore
mapreduce の入力または出力であるキーと値のペアのデータ。KeyValueDatastore
カスタム ファイル形式。データの読み取り用に提供された関数が必要です。FileDatastore
tall 配列のチェックポイント用データ ストア。TallDatastore
リレーショナル データベースのデータ コレクション。Database Toolbox™ を必要とします。DatabaseDatastore
Simulink® モデルで使用する入力および出力のシミュレーション データ。 SimulationDatastore
Vehicle Network Toolbox™ で使用する MDF ファイルのコレクション用データ ストア。MDFDatastore
Powertrain Blockset™ で使用する MDF ファイルのコレクション用データ ストア。MDFDatastore
学習イメージの前処理用データ ストア。Neural Network Toolbox™ を必要とします。 augmentedImageDatastore
イメージのノイズ除去を行うディープ ニューラル ネットワークの学習用データ ストア。 Image Processing Toolbox™ および Neural Network Toolbox を必要とします。denoisingImageDatastore
ピクセル ラベル データ用データ ストア。Computer Vision System Toolbox™ を必要とします。pixelLabelDatastore
セマンティック セグメンテーション ネットワーク用データ ストア。Computer Vision System Toolbox を必要とします。 pixelLabelImageDatastore
シミュレーション アンサンブル データを管理するためのデータ ストア。Predictive Maintenance Toolbox™ を必要とします。simulationEnsembleDatastore
アンサンブル データをカスタム ファイル形式で管理するためのデータ ストア。Predictive Maintenance Toolbox を必要とします。fileEnsembleDatastore

データ ストアの作成およびその読み取り

関数 tabularTextDatastore を使用して、各航空会社のフライトの出発と到着情報が含まれているサンプル ファイル airlinesmall.csv からデータ ストアを作成します。結果は TabularTextDatastore オブジェクトです。

ds = tabularTextDatastore('airlinesmall.csv')
ds = 

  TabularTextDatastore with properties:

                      Files: {
                             ' ...\matlab\toolbox\matlab\demos\airlinesmall.csv'
                             }
               FileEncoding: 'UTF-8'
          ReadVariableNames: true
              VariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more}

  Text Format Properties:
             NumHeaderLines: 0
                  Delimiter: ','
               RowDelimiter: '\r\n'
             TreatAsMissing: ''
               MissingValue: NaN

  Advanced Text Format Properties:
            TextscanFormats: {'%f', '%f', '%f' ... and 26 more}
         ExponentCharacters: 'eEdD'
               CommentStyle: ''
                 Whitespace: ' \b\t'
    MultipleDelimitersAsOne: false

  Properties that control the table returned by preview, read, readall:
      SelectedVariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more}
            SelectedFormats: {'%f', '%f', '%f' ... and 26 more}
                   ReadSize: 20000 rows

データ ストアを作成すると、すべてのデータをメモリに読み込まなくても対象のデータをプレビューできます。SelectedVariableNames プロパティを使用して目的の変数 (列) を指定し、その変数だけをプレビュー表示したり読み取ったりできます。

ds.SelectedVariableNames = {'DepTime','DepDelay'};
preview(ds)
ans = 
    DepTime    DepDelay
    _______    ________
     642       12      
    1021        1      
    2055       20      
    1332       12      
     629       -1      
    1446       63      
     928       -2      
     859       -1      

欠損値を表すデータの値を指定できます。airlinesmall.csv では、欠損値は NA で表されます。

ds.TreatAsMissing = 'NA';

データ ストア内の目的の変数に関するすべてのデータがメモリに収まる場合は、関数 readall を使用してそのデータを読み取ることができます。

T = readall(ds);

それ以外の場合は、関数 read を使用してメモリに収まる小さなサブセットとしてデータを読み取ります。既定では、関数 readTabularTextDatastore から一度に 20,000 行ずつ読み取ります。ただし、この値は ReadSize プロパティに新しい値を代入して変更できます。

ds.ReadSize = 15000;

関数 reset を使用して、再度読み取る前にデータ ストアを初期状態にリセットします。while ループ内で関数 read を呼び出して、各データのサブセットで中間計算を実行してから、最後に中間結果を集計できます。次のコードでは、変数 DepDelay の最大値を計算しています。

reset(ds)
X = [];
while hasdata(ds)
      T = read(ds);
      X(end+1) = max(T.DepDelay);
end
maxDelay = max(X)
maxDelay =
        1438

個々のファイルのデータがメモリに収まる場合は、read の各呼び出しで特定の行数ではなく 1 つのファイル全体を読み取るように指定できます。

reset(ds)
ds.ReadSize = 'file';
X = [];
while hasdata(ds)
      T = read(ds);
      X(end+1) = max(T.DepDelay);
end
maxDelay = max(X);

データ ストア内のデータのサブセットの読み取りに加え、mapreduce を使用して map 関数と reduce 関数をデータ ストアに適用できます。MATLAB® の MapReduce についての詳細は、MapReduce 入門を参照してください。

参考

| | | | | | |

関連するトピック