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