メインコンテンツ

categorical 配列の利点

categorical データの自然表現

categorical は、離散カテゴリの有限集合からの値をもつデータを格納するためのデータ型です。categorical 配列の代わりによく使用される方法の 1 つとして、string 配列を使用する方法があります。ただし、string 配列にはテキストが保存されますが、それを使用してカテゴリを定義することはできません。categorical 配列の代わりによく使用されるもう 1 つの方法は、数値配列で整数を使用して categorical データを保存する方法です。数値配列を使用すると、有用なすべての説明情報がカテゴリ名から失われるだけでなく、整数値が categorical データの場合にはもたないような通常の数値的意味をもっているように受け止められる傾向があります。

カテゴリの数学的な順序

categorical 配列は、離散カテゴリの有限集合からの値をもつ非数値データに使用できる、メモリ効率に優れた便利なコンテナーです。これらは、特に、カテゴリに意味のある数学的な順序が付けられている場合、たとえば、small < medium < large であるカテゴリの離散集合 ["small" "medium" "large"] からの要素をもつ配列などでは便利です。

string 配列で提供される唯一の順序は英数字順です。categorical 配列を使用する場合、一連のカテゴリに適した任意の順序を指定できます。関係演算を使用して等価性をテストし、意味のある数学的な順序が付けられている要素単位の比較を実行することができます。

必要なメモリの削減

この例では、データを string 配列として格納するために必要なメモリと categorical 配列に必要なメモリを比較する方法を示します。string 配列では、繰り返し値が多数ある場合でも、各要素を格納する必要があります。categorical 配列には、各カテゴリ名のコピーが 1 つだけ格納されます。したがって、多くの場合、繰り返し値が多数含まれる配列の格納に必要なメモリ量が削減されます。

サンプル string 配列を作成します。

state = [repmat("MA",25,1);repmat("NY",25,1); ...
         repmat("CA",50,1); ...
         repmat("MA",25,1);repmat("NY",25,1)];

変数 state に関する情報を表示します。

whos state
  Name         Size            Bytes  Class     Attributes

  state      150x1              8212  string              

state を categorical 配列に変換します。

stateCats = categorical(state);

変数 stateCats の離散カテゴリを表示します。

categories(stateCats)
ans = 3×1 cell
    {'CA'}
    {'MA'}
    {'NY'}

stateCats には 150 個の要素が含まれていますが、カテゴリは 3 つだけです。

2 つの変数に関する情報を表示します。categorical 配列の格納に必要なメモリは大幅に減少しています。

whos state stateCats
  Name             Size            Bytes  Class          Attributes

  state          150x1              8212  string                   
  stateCats      150x1               524  categorical              

参考

|

トピック