Main Content

categorical 配列の作成

この例では、categorical 配列を作成する方法を説明します。categorical は、離散カテゴリの有限集合からの値をもつデータを格納するためのデータ型です。これらのカテゴリには自然な順序がある場合がありますが、必須ではありません。categorical 配列は、データを効率的に格納して操作するのに適しています。また、値のわかりやすい名前を維持することもできます。categorical 配列は table で行のグループを定義するために使用できます。

既定の設定では、categorical 配列には数学的に順序付けされていないカテゴリが含まれます。たとえば、ペットのカテゴリの離散集合 ["dog","cat","bird"] には、意味のある数学的な順序が付けられていないので、MATLAB® はアルファベット順 ["bird","cat","dog"] を使用します。"順序" categorical 配列には、意味のある数学的な順序が付けられているカテゴリが含まれます。たとえば、サイズのカテゴリの離散集合 ["small","medium","large"] には数学的な順序 small < medium < large が付けられています。

string 配列 (または文字ベクトルの cell 配列) から categorical 配列を作成する場合、先頭と末尾の空白が削除されます。たとえば、テキスト [" cat","dog"] をカテゴリとして指定し、これらをカテゴリに変換すると、["cat","dog"] になります。

string 配列からの categorical 配列の作成

関数 categorical を使用して、数値配列、logical 配列、string 配列、文字ベクトルの cell 配列または既存の categorical 配列から categorical 配列を作成することができます。

ニュー イングランドの州名を含む 1 行 11 列の string 配列を作成します。

state = ["MA","ME","CT","VT","ME","NH","VT","MA","NH","CT","RI"]
state = 1x11 string
  Columns 1 through 9

    "MA"    "ME"    "CT"    "VT"    "ME"    "NH"    "VT"    "MA"    "NH"

  Columns 10 through 11

    "CT"    "RI"

string 配列 state を数学的な順序が付けられていない categorical 配列に変換します。

state = categorical(state)
state = 1x11 categorical
  Columns 1 through 9

     MA      ME      CT      VT      ME      NH      VT      MA      NH 

  Columns 10 through 11

     CT      RI 

変数 state の離散カテゴリを一覧表示します。state で一覧表示される一意の州は 6 つだけで、これは 6 つのカテゴリがあることを意味します。カテゴリがアルファベット順に並べられています。

categories(state)
ans = 6x1 cell
    {'CT'}
    {'MA'}
    {'ME'}
    {'NH'}
    {'RI'}
    {'VT'}

新しい要素と欠損要素の追加

元の string 配列に要素を追加します。要素の 1 つは欠損 string で、<missing> として表示されます。NaN が数値配列内の欠損値を示すことができるように、<missing> は string 配列内の欠損値を示します。

state = ["MA","ME","CT","VT","ME","NH","VT","MA","NH","CT","RI"];
state = [string(missing) state];
state(13) = "ME"
state = 1x13 string
  Columns 1 through 9

    <missing>    "MA"    "ME"    "CT"    "VT"    "ME"    "NH"    "VT"    "MA"

  Columns 10 through 13

    "NH"    "CT"    "RI"    "ME"

string 配列を categorical 配列に変換します。欠損 string は未定義のカテゴリになり、<undefined> として表示されます。どのカテゴリにも属さない categorical 配列の要素を示します。

state = categorical(state)
state = 1x13 categorical
  Columns 1 through 8

     <undefined>      MA      ME      CT      VT      ME      NH      VT 

  Columns 9 through 13

     MA      NH      CT      RI      ME 

string 配列からの順序 categorical 配列の作成

8 つのオブジェクトのサイズを含む 1 行 8 列の string 配列を作成します。

AllSizes = ["medium","large","small","small","medium",...
            "large","medium","small"];

string 配列 AllSizes には、"large""medium""small" の 3 つの異なる値が含まれています。string 配列を使用する場合、small < medium < large を示す便利な方法はありません。

string 配列 AllSizes を順序 categorical 配列に変換します。valueset を使用して、カテゴリを定義する値 smallmedium および large を指定します。順序 categorical 配列では、最初に指定されたカテゴリが最小になり、最後に指定されたカテゴリが最大になります。

valueset = ["small","medium","large"];
sizeOrd = categorical(AllSizes,valueset,'Ordinal',true)
sizeOrd = 1x8 categorical
  Columns 1 through 6

     medium      large      small      small      medium      large 

  Columns 7 through 8

     medium      small 

categorical 配列の値の順序 sizeOrd は変更されません。

categorical 変数 sizeOrd の離散カテゴリを一覧表示します。

categories(sizeOrd)
ans = 3x1 cell
    {'small' }
    {'medium'}
    {'large' }

カテゴリが、数学的な順序 small < medium < large に対応する指定された順序で並べられます。

数値データのビン化による順序 categorical 配列の作成

0 から 50 までの範囲の 100 個の乱数からなるベクトルを作成します。

x = rand(100,1)*50;

関数 discretize を使用して x の値をビン化して categorical 配列を作成します。0 ~ 15 までのすべての値を最初のビンに、15 ~ 35 までのすべての値を 2 番目のビンに、35 ~ 50 までのすべての値を 3 番目のビンに入れます。それぞれのビンには、左の端点は含まれますが、右の端点は含まれません。

catnames = ["small","medium","large"];
binnedData = discretize(x,[0 15 35 50],'categorical',catnames);

binnedData は、small < medium < large である 3 つのカテゴリを含む 100 行 1 列の順序 categorical 配列です。

関数 summary を使用して各カテゴリの要素の数を出力します。

summary(binnedData)
     small       30 
     medium      35 
     large       35 

ビン化されたデータのさまざまな種類のグラフを作成できます。たとえば、binnedData の円グラフを作成します。

pie(binnedData)

参考

| | |

関連する例

詳細